home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / eric.hdv / ANNMIDI / INT0DRVR.SC3.txt < prev    next >
Text File  |  2020-08-13  |  3KB  |  80 lines

  1. ;*** POKE80
  2. ;*** STORES ANY BYTE DIRECTLY ON 80 COLUMN SCREEN
  3. ;*** USING PROTOCOL DESCRIBED IN "INSIDE THE APPLE //E"
  4. ;--------
  5. ; POKE80 
  6. ;--------
  7. ; A = CHARACTER TO POKE ON SCREEN
  8. ; X = X COORDINATE (0-79)
  9. ; Y = Y COORDINATE (0-23)
  10. ;--------
  11. POKE80   CPX #80             ;VALIDATE X,Y COORDINATES
  12.          BCC POKE80A
  13.          CPY #24
  14.          BCC POKE80A
  15.          RTS
  16. POKE80A  PHP                 ;SAVE INTERRUPT STATUS
  17.          PHA                 ;SAVE USER'S DATA BYTE
  18.          STA SAVEA
  19.          STX SAVEX
  20.          STY SAVEY
  21. ;         SEI                 ;DISABLE INTERRUPTS (NOT NEEDED)
  22.          LDA $C018
  23.          STA STAT80ST        ;SAVE STATUS OF 80STORE AND PAGE2 FLAGS
  24.          LDA $C01C
  25.          STA STATPAG2
  26.          STA $C001           ;TURN 80STORE ON TO USE PAGE2 TO SWITCH MAIN->AUX
  27.          LDA $28
  28.          STA SAVEBASL        ;SAVE CURRENT SCREEN BASE ADDRESS 
  29.          LDA $29
  30.          STA SAVEBASH
  31.          TYA                 ;MULTIPLY Y BY 2 FOR LOOKUP IN BASE TABLE
  32.          ASL A
  33.          TAY
  34.          LDA BASTABLE,Y      ;GET LINE ADDRESS AND STORE IT IN ZP VECTOR
  35.          STA $28
  36.          INY
  37.          LDA BASTABLE,Y
  38.          STA $29
  39.          TXA                 ;DIVIDE X BY 2 TO GET OFFSET FROM LINE BASE
  40.          LSR A
  41.          TAY                 ;PUT IT IN Y FOR THE INDIRECT ADDRESSING LATER
  42.          BCC EVENCOL         ;CHECK CARRY TO DETERMINE IF X WAS ODD OR EVEN
  43.          STA $C054           ;ODD - TURN PAGE 2 OFF
  44.          BCS STORBYTE
  45. EVENCOL  STA $C055           ;EVEN - TURN PAGE 2 ON
  46. STORBYTE PLA
  47.          STA ($28),Y         ;POKE THE CHARACTER ON THE SCREEN
  48.          LDA STAT80ST        
  49.          BPL OFF80ST
  50.          STA $C001           ;80STOREON
  51.          BMI RSTRPAG2
  52. OFF80ST  STA $C000           ;80STOREOFF
  53. RSTRPAG2 LDA STATPAG2
  54.          BPL OFFPAG2
  55.          STA $C055           ;PAGE2ON
  56.          BMI RSTRBASE
  57. OFFPAG2  STA $C054           ;PAGE2OFF
  58. RSTRBASE LDA SAVEBASL        ;RESTORE ZP BASE VECTOR
  59.          STA $28
  60.          LDA SAVEBASH
  61.          STA $29
  62.          LDX SAVEX
  63.          LDY SAVEY
  64.          LDA SAVEA
  65.          PLP                 ;RESTORE INTERRUPT STATUS
  66.          RTS
  67. ;
  68. STAT80ST DFB $00
  69. STATPAG2 DFB $00
  70. SAVEBASL DFB $00
  71. SAVEBASH DFB $00
  72. SAVEA    DFB $00
  73. SAVEX    DFB $00
  74. SAVEY    DFB $00
  75. BASTABLE DFB $00,$04,$80,$04,$00,$05,$80,$05,$00,$06,$80,$06,$00,$07,$80,$07
  76.          DFB $28,$04,$A8,$04,$28,$05,$A8,$05,$28,$06,$A8,$06,$28,$07,$A8,$07
  77.          DFB $50,$04,$D0,$04,$50,$05,$D0,$05,$50,$06,$D0,$06,$50,$07,$D0,$07
  78. ;
  79.          CHN INT0DRVR.SC4
  80.