Apple II User Manual

Page of 257
2337   EF81 A9 04              LDA #4          ;FIRST CHIP SELECT
2338   EF83 E0 00              CPX #0          ;FIRST CHIP ?
2339   EF85 F0 04              BEQ OUTDD3
2340   EF87 0A          OUTDD2 ASL A
2341   EF88 CA                 DEX
2342   EF89 D0 FC              BNE OUTDD2      ;BACK TILL RIGH CS
2343   EF8B 8D 28 A4    OUTDD3 STA STIY+1      ;SAVE CS TEMPORARILY
2344   EF8E 68                 PLA             ;GET X AGAIN FOR CHAR
2345   EF8F 29 03              AND #$03        ;IN THAT CHIP
2346   EF91 0D 28 A4           ORA STIY+1      ;OR IN CS AND CHAR
2347   EF94             ;STORE ADDR AND DATA INTO DISPL
2348   EF94 49 FF              EOR #$FF        ;W=1 , CE=0 & A1,A0
2349   EF96 8D 00 AC           STA RA
2350   EF99 AA                 TAX             ;SAVE A IN X
2351   EF9A 68                 PLA             ;GET DATA
2352   EF9B 48                 PHA
2353   EF9C 8D 02 AC           STA RB
2354   EF9F 8A                 TXA
2355   EFA0 49 80              EOR #$80        ;SET W=0
2356   EFA2 8D 00 AC           STA RA
2357   EFA5 EA                 NOP
2358   EFA6 09 7C              ORA #$7C        ;SET CE=1
2359   EFA8 8D 00 AC           STA RA
2360   EFAB A9 FF              LDA #$FF        ;SET W=1
2361   EFAD 8D 00 AC           STA RA
2362   EFB0 68                 PLA             ;RETURN DATA
2363   EFB1 60                 RTS
2364   EFB2
2365   EFF9                    *=$EFF9
2366   EFF9 EA                 .DB $EA
2367   F000                    *=$F000
2368   F000             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2369   F000             ;OUTPUT ACC TO PRINTER SUBROUTINE
2370   F000             ;PRINTS ON 21RST CHAR OR WHEN <CR>
2371   F000             ;IT WILL PUT IT ON BUBFFER BUT WONT PRINT IF
2372   F000             ;PRIFLG=0
2373   F000 48          OUTPRI PHA             ;SAVE CHR TO BE OUTPUT
2374   F001 20 9E EB           JSR PHXY        ;SAVE X
2375   F004 C9 0D              CMP #CR         ;SEE IF CR
2376   F006 F0 07              BEQ OUT01       ;YES SO PRINT THE BUFF
2377   F008 AE 16 A4           LDX CURPOS      ;PTR TO NEXT POS IN BUFF
2378   F00B E0 14              CPX #20         ;SEE IF BUFF FULL
2379   F00D D0 16              BNE OUT04       ;NOT FULL SO RETURN
2380   F00F             ;<CR> SO FILL REST OF BUFFER WITH BLANKS
2381   F00F 48          OUT01  PHA
2382   F010 A9 00              LDA #0          ;CURPOS = 0
2383   F012 AE 16 A4           LDX CURPOS      ;SEE IF ANYTHING IN BUFFER
2384   F015 8D 16 A4           STA CURPOS
2385   F018 20 38 F0           JSR OUTPR       ;CLEAR PRIBUF TO THE RIGHT
2386   F01B             ;BUFFER FILLED SO PRINT IT
2387   F01B 20 45 F0           JSR IPST        ;START THE PRINT
2388   F01E A2 00              LDX #0          ;STORE CHR IN BUFF (FIRST LOC)
2389   F020 68                 PLA             ;GET IT
2390   F021 C9 0D              CMP #CR         ;DONT STORE IF <CR>
2391   F023 F0 0E              BEQ OUT05
2392   F025 9D 60 A4    OUT04  STA IBUFM,X     ;STORE CHR IN BUFF
2393   F028 EE 16 A4           INC CURPOS      ;INCR BUFF PNTR
2394   F02B E8                 INX
2395   F02C 29 80              AND #$80
2396   F02E D0 03              BNE OUT05       ;DONT CLR IF MSB=1
2397   F030 20 38 F0           JSR OUTPR       ;CLEAR PRIBUFF TO THE RIGHT
2398   F033 20 AC EB    OUT05  JSR PLXY        ;RESTORE REGS