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

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