Apple II User Manual

Page of 257
2647   F1D2             ;CHCK ACTIVE BUFFER AND LOAD A CHR
2648   F1D2             ;CARRY=0 IF ONLY 1 BUFFER ,C=1 IF 2 BUFFERS
2649   F1D2 AD 12 A4    CKBUFF LDA INFLG
2650   F1D5 CD 13 A4           CMP OUTFLG
2651   F1D8 D0 08              BNE CBUFF1
2652   F1DA C9 54              CMP #'T'        ;SEE IF INFLG=OUTFLG = T
2653   F1DC D0 04              BNE CBUFF1
2654   F1DE 38                 SEC             ;USE PAGE 1 FOR OUTPUT BUFFER
2655   F1DF B5 AD              LDA TABUF2,X
2656   F1E1 60                 RTS
2657   F1E2 18          CBUFF1 CLC             ;USE SAME BUFFER FOR I/O
2658   F1E3 BD 16 01           LDA TABUFF,X
2659   F1E6 60                 RTS
2660   F1E7
2661   F1E7             ;COMPUTE BLOCK CHECKSUM & PUT IT
2662   F1E7             ;AT THE END OF ACTIVE BUFFER
2663   F1E7 A9 00       BKCKSM LDA #0          ;CLEAR BLK CKSUM LOCAT
2664   F1E9 8D 66 01           STA TABUFF+80
2665   F1EC 8D 67 01           STA TABUFF+81
2666   F1EF A2 4F              LDX #79
2667   F1F1 20 D2 F1    BKCK1  JSR CKBUFF      ;GET CHR FROM EITHER BUFFER
2668   F1F4 18                 CLC
2669   F1F5 6D 66 01           ADC TABUFF+80   ;ADD TO CKSUM
2670   F1F8 8D 66 01           STA TABUFF+80
2671   F1FB 90 03              BCC *+5
2672   F1FD EE 67 01           INC TABUFF+81
2673   F200 CA                 DEX
2674   F201 10 EE              BPL BKCK1       ;DO THE WHOLE BUFFER
2675   F203 A2 50              LDX #80
2676   F205 AD 66 01           LDA TABUFF+80   ;PUT CKSUM INTO RIGHT BUFFER
2677   F208 20 0F F2           JSR BKCK2
2678   F20B E8                 INX
2679   F20C AD 67 01           LDA TABUFF+81
2680   F20F 48          BKCK2  PHA             ;OUTPUT A CHAR TO RIGHT BUFFER
2681   F210 20 D2 F1           JSR CKBUFF      ;GET WHICH BUFFER
2682   F213 68                 PLA
2683   F214 B0 04              BCS BKCK3       ;BRNCH TO SECOND BUFFER
2684   F216 9D 16 01           STA TABUFF,X
2685   F219 60                 RTS
2686   F21A 95 AD       BKCK3  STA TABUF2,X    ;TO PAG 1
2687   F21C 60                 RTS
2688   F21D
2689   F21D             ;SET TAPE (1 OR 2) FOR OUTPUT
2690   F21D 20 C0 F2    TAOSET JSR SETSPD      ;SET UP SPEED (# OF HALF PULSES)
2691   F220 AD 35 A4           LDA TAPOUT      ;OUTPUT FLG (TAPE 1 OR 2)
2692   F223 20 1C EE           JSR TIOSET      ;SET PB4 OR PB5 TO ZERO
2693   F226 A9 EC              LDA #DATOUT+MOFF ;SET CA2=0 (DATA OUT)
2694   F228 8D 0C A8           STA PCR
2695   F22B A9 C0              LDA #T1FR       ;SET TIMER IN FREE RUNNING
2696   F22D 8D 0B A8           STA ACR
2697   F230 A9 00              LDA #00
2698   F232 8D 05 A8           STA T1CH        ;START TIMER T1
2699   F235 AE 09 A4           LDX GAP         ;OUTPUT 4*GAP SYN BYTES
2700   F238 A9 16       TAOS1  LDA #$16        ;SYN CHAR
2701   F23A 20 4A F2           JSR OUTTAP      ;TO TAPE
2702   F23D 20 4A F2           JSR OUTTAP
2703   F240 20 4A F2           JSR OUTTAP
2704   F243 20 4A F2           JSR OUTTAP
2705   F246 CA                 DEX
2706   F247 D0 EF              BNE TAOS1
2707   F249 60                 RTS
2708   F24A