09 .OPT NO LIST›10 ; SAVE #D1:CASSETTE.M65›20 ;›30 ;›40 ; LOAD #D1:PRINTER.M65›50 ;›51 .PAGE "Cassette Handler"›52 ; *= $FCD8›60 LIST ›80 .LOCAL ›99 ; Most comments from 800 source›064728 CIN JMP CLICK Cassette init›064731 INITCAS LDA #$CC routine›064733 STA CBAUDL followed by›064736 LDA #5 cassette i/o›064738 STA CBAUDH routines›064741 SPECIAL.C RTS ›064742 OPEN.C LDA ICAX2Z›064744 STA FTYPE›064746 LDA ICAX1Z›064748 AND #$0C›064750 CMP #4›064752 BEQ DOCOPENI›064754 CMP #8›064756 BEQ DOCOPENO›064758 RTS If already open leave status at 132›064759 DOCOPENI LDA #0›064761 STA WMODE Set read mode›064764 STA FEOF No eof yet›064766 LDA #1 Tone for press play›064768 JSR ?BEEP›064771 BMI ?OPNRTN If err during beep›064773 MOTORON LDA #$34 Turn motor on›064775 STA PACTL›064778 LDX PALNTS›064780 LDY ?65171,X Set leader time›064783 LDA ?65169,X›064786 TAX ›064787 LDA #3›064789 STA CDTMF3›064792 JSR SETVBV Set vblank timer›064795 ?WAITTM LDA CDTMF3›064798 BNE ?WAITTM Wait for motor to come up to speed›064800 LDA #$80 Number bytes in buffer›064802 STA BPTR›064804 STA BLIM›064807 JMP ?OPOK›064810 ?PBRK LDY #$80 Break abort›064812 DEC BRKKEY Reset key›064814 ?OPNRTN LDA #0 Clear write mode flag›064816 STA WMODE›064819 RTS ›064820 DOCOPENO LDA #$80›064822 STA WMODE set write mode›064825 LDA #2 Record tone›064827 JSR ?BEEP›064830 BMI ?OPNRTN Error in beep›064832 LDA #$CC Set baud rate›064834 STA AUDF3›064837 LDA #5›064839 STA AUDF4›064842 LDA #$60›064844 STA DDEVIC›064847 JSR SENDEV Tell pokey to write marks›064850 LDA #$34 Write 5" blank tape›064852 STA PACTL›064855 LDX PALNTS›064857 LDY ?65167,X Times for leader›064860 LDA ?65165,X›064863 TAX ›064864 LDA #3›064866 JSR SETVBV›064869 LDA #$FF›064871 STA CDTMF3›064874 ?WDLR LDA BRKKEY›064876 BEQ ?PBRK If break during leader›064878 LDA CDTMF3›064881 BNE ?WDLR›064883 LDA #0 Init buffer pointer›064885 STA BPTR›064887 ?OPOK LDY #1›064889 RTS ›064890 GET.C LDA FEOF If eof›064892 BMI ?ISEOF return status›064894 LDX BPTR Buffer pointer›064896 CPX BLIM If end of buffer›064899 BEQ CREADBLK read another block›064901 LDA CASBUF+3,X Get next byte›064904 INC BPTR bump pointer›064906 LDY #1 status ok›064908 ?GBX RTS ›064909 CREADBLK LDA #'R›064911 JSR ?SIOSB›064914 TYA ›064915 BMI ?GBX exit on err›064917 LDA #0 Reset pointer›064919 STA BPTR›064921 LDX #$80 Default bytes›064923 LDA CASBUF+2›064926 CMP #$FE If header›064928 BEQ ?ATEOF go read again›064930 CMP #$FA If last data record›064932 BNE ?NLR›064934 LDX CASBUF+130 Last record get # bytes›064937 ?NLR STX BLIM›064940 JMP GET.C Get next byte›064943 ?ATEOF DEC FEOF Set flag›064945 ?ISEOF LDY #136 End of file›064947 RTS ›064948 PUT.C LDX BPTR Pointer›064950 STA CASBUF+3,X store character›064953 INC BPTR Bump index›064955 LDY #1 Status ok›064957 CPX #127 If buffer full›064959 BEQ ?WRTBF go write it›064961 RTS ›064962 ?WRTBF LDA #$FC Record type=data›064964 JSR ?WSIOSB›064967 LDA #0 Reset pointer›064969 STA BPTR›064971 RTS ›064972 STATUS.C LDY #1›064974 RTS ›064975 CLOSE.C LDA WMODE If writing›064978 BMI ?CLWRT go close for write›064980 LDY #1 Success›064982 ?FCAX LDA #$3C Stop motor in›064984 STA PACTL case short irg mode›064987 RTS ›064988 ?CLWRT LDX BPTR If no data›064990 BEQ ?WTLR no dt1 rec›064992 STX CASBUF+130 Write to›064995 LDA #$FA last record record type›064997 JSR ?WSIOSB Write out buffer›065000 BMI ?FCAX go if error›065002 ?WTLR LDX #127›065004 LDA #0 Clear buffer›065006 ?ZTBUF STA CASBUF+3,X›065009 DEX ›065010 BPL ?ZTBUF›065012 LDA #$FE Write wot record›065014 JSR ?WSIOSB›065017 JMP ?FCAX Flag closed and exit›065020 ?BEEP STA FREQ›065022 ?BEEP1 LDA RTCLOK+2›065024 CLC ›065025 LDX PALNTS›065027 ADC ?65173,X›065030 TAX ›065031 ?WFL LDA #$FF›065033 STA CONSOL Beep on›065036 LDA #0›065038 LDY #$F0›065040 ?BWAIT DEY ›065041 BNE ?BWAIT›065043 STA CONSOL Beep off›065046 LDY #$F0›065048 ?BWAIT2 DEY ›065049 BNE ?BWAIT2›065051 CPX RTCLOK+2 One " yet?›065053 BNE ?WFL no›065055 DEC FREQ Count beeps›065057 BEQ ?WFAK til done›065059 TXA ›065060 CLC ›065061 LDX PALNTS›065063 ADC ?65175,X›065066 TAX ›065067 ?BWAIT3 CPX RTCLOK+2›065069 BNE ?BWAIT3›065071 BEQ ?BEEP1›065073 ?WFAK JSR ?WFAK1›065076 TYA Wait for a key›065077 RTS ›065078 ?WFAK1 LDA KEYBDV+5›065081 PHA ›065082 LDA KEYBDV+4›065085 PHA ›065086 RTS ›065087 ?SIOSB STA DCOMND›065090 LDA #0›065092 STA DBYTHI›065095 LDA #131›065097 STA DBYTLO›065100 LDA # >CASBUF›065102 STA DBUFHI›065105 LDA #