Apple II User Manual

Page of 257
2461   F0B2 A9 06              LDA #PRTIME/256 ;START T2 FOR 1.7 MSEC
2462   F0B4 8D 09 A8           STA T2H
2463   F0B7 20 E3 F0           JSR IPSU        ;SET NEXT PATTERN WHILE WAITING
2464   F0BA 20 1B EC           JSR DE2         ;WAIT TILL TIME OUT
2465   F0BD A9 00              LDA #0          ;THERMAL ELEM OFF
2466   F0BF 8D 01 A8           STA DRAH
2467   F0C2 AD 00 A8           LDA DRB         ;BUT DONT CHANGE TAPE CONTROLS
2468   F0C5 29 FC              AND #$FC
2469   F0C7 8D 00 A8           STA DRB
2470   F0CA 60                 RTS
2471   F0CB
2472   F0CB             ; SUBROUTINE PINT -- INIT VARS FOR PRINTER
2473   F0CB A9 FF       PINT   LDA #$FF
2474   F0CD 8D 74 A4           STA IDIR        ;DIRECTION <= -
2475   F0D0 A9 05              LDA #5
2476   F0D2 8D 75 A4           STA ICOL        ;COLUMN <= LEFTMOST +1
2477   F0D5 A9 01              LDA #1
2478   F0D7 8D 76 A4           STA IOFFST      ;OFFSET <= LEFT CHARACTER
2479   F0DA 8D 7C A4           STA IMASK
2480   F0DD A9 00              LDA #0
2481   F0DF 8D 77 A4           STA IDOT        ;DOT COUNTER <= 0
2482   F0E2 60                 RTS
2483   F0E3
2484   F0E3             ;THE VARIABLES FOR THE PRINTER ARE AS FOLLOWS:
2485   F0E3             ;
2486   F0E3             ;IDIR   DIRECT HEAD IS CURRENTLY MOVING (0=+, $FF=-)
2487   F0E3             ;ICOL   CLMN TO BE PRNTED NEXT (LEFTMOST=0,RIGHTMOST=4)
2488   F0E3             ;IOFFST OFFSET N PRINT BUFF (0=LEFT CHR, 1=RIGHT CHR)
2489   F0E3             ;IDOT   COUNT OF NUMBER OF DOTS PRINTED THUS FAR
2490   F0E3             ;IOUTL  SOLENOID PATTERN (8 CHRS ON RIGHT)
2491   F0E3             ;IOUTU  SOLENOID PATTERN (2 CHRS ON LEFT)
2492   F0E3             ;IBITL  1 BIT MSK USED IN SETTING NEXT SOLENOID VALUE
2493   F0E3             ;IBITU  UPPER PART OF MASK
2494   F0E3             ;IBUFM  START OF PRINT BUFFER (LEFTMOST CHR FIRST)
2495   F0E3             ;IMASK  MASK FOR CURRENT ROW BEING PRINTED
2496   F0E3             ;JUMP   ADDRESS OF TABLE FOR CURRENT COLUMN
2497   F0E3             ;
2498   F0E3             ;   THE DOT PATTERNS FOR THE CHRS ARE STORED SO THAT...
2499   F0E3             ;EACH BYTE CONTAINS THE DOTS FOR ONE COLUMN OF ONE...
2500   F0E3             ;CHR. SINCE EACH COLUMN CONTAINS SEVEN DOTS ,
2501   F0E3             ;THIS MEANS THAT ONE BIT PER BYTE IS UNUSED.
2502   F0E3             ;    THE PATTERNS ARE ORGANIZED INTO 5 TABLES OF 64...
2503   F0E3             ;BYTES WHERE EACH TABLE CONTAINS ALL THE DOT...
2504   F0E3             ;PATTERNS FOR A PARTICULAR COLUMN. THE BYTES IN EACH...
2505   F0E3             ;TABLE ARE ORDERED ACCORDING TO THE CHR CODE OF...
2506   F0E3             ;THE CHR BEING REFERENCED. THE CHR CODE CAN...
2507   F0E3             ;THUS BE USED TO DIRECTLY INDEX INTO THE TABLE.
2508   F0E3
2509   F0E3             ;SUBROUTINE IPSU -- SET UP OUTPUT PATTERN FOR PRINTER
2510   F0E3             ;   THIS ROUTINE IS CALLED IN ORDER TO
2511   F0E3             ;SET UP THE NEXT GROUP OF SOLENOIDS TO
2512   F0E3             ;BE OUTPUT TO THE PRINTER.
2513   F0E3             ;   ON ENTRY THE CONTENTS OF ALL REGISTERS
2514   F0E3             ;ARE ARBITRARY
2515   F0E3             ;   ON EXIT THE CONTENTS OF A,X,Y ARE UNDEFINED
2516   F0E3 A2 00       IPSU   LDX #0          ;X POINTS TO VAR BLOCK FOR PRNTR
2517   F0E5 20 21 F1           JSR INCP        ;ADVANCE PTRS TO NXT DOT POSITION
2518   F0E8             ;X NOW CONTAINS INDEX INTO PRINT BUFFER
2519   F0E8 BD 60 A4    IPS1   LDA IBUFM,X     ;LOAD NEXT CHAR FROM BUFFER
2520   F0EB 29 3F              AND #$3F
2521   F0ED A8                 TAY
2522   F0EE A9 7D              LDA #JUMP       ;A<= DOT PATTERN FOR CHAR & COL