Apple II User Manual

Page of 257
2585   F15D DE 74 A4    OP06   DEC IDIR,X      ;DIRECTION <= $FF (-)
2586   F160
2587   F160             ;START OF NEW PRINT ROW
2588   F160 1E 7C A4    NEWROW ASL IMASK,X     ;UPDATE ROW MASK FOR DOT PATTERNS
2589   F163             ;START OF NEW PRINT COLUMN
2590   F163 A9 00       NEWCOL LDA #0          ;CLEAR OUTPUT PATTERN
2591   F165 9D 78 A4           STA IOUTL,X     ;PATTERN FOR 8 RIGHT CHRS
2592   F168 9D 79 A4           STA IOUTU,X     ;PATTERN FOR 2 LEFT SOLEN
2593   F16B 9D 7B A4           STA IBITU,X     ;OUTPUT MSK FOR LEFTMOST SOLEN
2594   F16E A9 01              LDA #1
2595   F170 9D 7A A4           STA IBITL,X     ;OUTPUT MSK FOR RIGHTMOST SOLEN
2596   F173             ;GET ADDRESS OF DOT PATTERN TABLE FOR NEXT COLUMN
2597   F173 BD 75 A4           LDA ICOL,X      ;GET COLUMN NUMBER (0-4)
2598   F176 0A                 ASL A           ;*2 ,INDEX INTO TBL OF TBL ADDRS
2599   F177 A8                 TAY
2600   F178 B9 D7 F2           LDA MTBL,Y      ;LSB OF ADDR OF TABLE
2601   F17B 9D 7D A4           STA JUMP,X      ;PTR TO TBL WITH DOT PATTERNS
2602   F17E B9 D8 F2           LDA MTBL+1,Y    ;MSB OF TABLE ADDRESS
2603   F181 9D 7E A4           STA JUMP+1,X
2604   F184 A9 12              LDA #18         ;COMPUTE INDEX INTO PRNTR BUFFER
2605   F186 1D 76 A4           ORA IOFFST,X    ;+1 IF RIGHT CHR
2606   F189 AA                 TAX
2607   F18A 60                 RTS
2608   F18B
2609   F18B             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2610   F18B             ;OUTPUT ACC TO TAPE BUFFER SUBROUTINE
2611   F18B             ; & WHEN FULL OUTPUT BUFF TO TAPE.
2612   F18B             ; IF INFLG=OUTFLG= T USE TWO BUFFERS
2613   F18B             ;OTHERWISE USE SAME BUFFER FOR INPUT
2614   F18B             ;AND OUTPUT (MONIT BUFFER)
2615   F18B 20 9E EB    TOBYTE JSR PHXY        ;SAVE X
2616   F18E AE 37 A4           LDX TAPTR2      ;TAPE BUFFER POINTER FOR OUTPUT
2617   F191 20 0F F2           JSR BKCK2       ;STORE IN BUFFER
2618   F194 E8                 INX
2619   F195 8E 37 A4           STX TAPTR2      ;FOR NEXT
2620   F198 E0 50              CPX #80         ;BUFFER FULL?
2621   F19A D0 32              BNE TABY3       ;NO , GO BACK
2622   F19C             ;OUTPUT A BLOCK FROM BUFFER TO TAPE
2623   F19C 20 E7 F1           JSR BKCKSM      ;COMPUT BLOCK CHECKSUM
2624   F19F 20 1D F2           JSR TAOSET      ;SET TAPE FOR OUTPUT
2625   F1A2 A9 23              LDA #'#'        ;CHAR FOR BEGINNING
2626   F1A4 20 4A F2           JSR OUTTAP      ;OF BLOCK
2627   F1A7             ;OUTPUT CHRS FROM ACTIVE BUFFER
2628   F1A7 20 D2 F1    TABY2  JSR CKBUFF      ;LOAD CHR FROM ACTIVE BUFFER
2629   F1AA 20 4A F2           JSR OUTTAP      ; FROM BUFFER
2630   F1AD E8                 INX
2631   F1AE E0 53              CPX #83         ;2 BLOCK CKSUM CHR + 1 EXTRA CHR..
2632   F1B0 D0 F5              BNE TABY2       ;OTHERWISE ERROR
2633   F1B2 AD 00 A8           LDA DRB
2634   F1B5 29 CF              AND #$CF        ;TURN TAPES OFF PB5,PB4
2635   F1B7 8D 00 A8           STA DRB
2636   F1BA 58                 CLI             ;ENABLE INTERRUPT
2637   F1BB A9 00              LDA #0
2638   F1BD 8D 37 A4           STA TAPTR2      ;CLR TAPE BUFF PTR
2639   F1C0 A9 00              LDA #T1I        ;RESET FREE RUNNING TO 1 SHOT
2640   F1C2 8D 0B A8           STA ACR
2641   F1C5 20 9A FF           JSR PAT22       ;ADD 1 TO BLK COUNT & OUTPUT
2642   F1C8 AD 68 01           LDA BLKO        ;PUT BLK CNT IN FIRST LOC (TABUFF)
2643   F1CB 20 8B F1           JSR TOBYTE
2644   F1CE 20 AC EB    TABY3  JSR PLXY
2645   F1D1 60                 RTS
2646   F1D2