home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / ACE12-SRC-1.SFX / acevic80.s < prev   
Encoding:
Text File  |  1990-02-12  |  12.7 KB  |  873 lines

  1. ;┴├┼-64 KERNEL ╓╔├ BITMAPPED 80-COLUMN SCREEN DRIVER CODE
  2.  
  3. ;VIC MEMORY LAYOUT: $E000=BITMAP, $DC00=COLOR, $D800=CHARSET4BIT
  4.  
  5. VDC├HAR┴DDR = $E000
  6. VDC├OLOR┴DDR = $DC00
  7. CHARSET4BIT  = $D800
  8. VDC╥OW╔NC = 80
  9. VDC╥OW╨HYS╔NC = 320
  10. VDC├OLOR╔NC = 40
  11.  
  12. VDC╫IN╙CR╪   .BUF 1
  13. VDC╫IN╙CR┘   .BUF 1
  14. VDC╫IN╥OWS   .BUF 1
  15. VDC╫IN├OLS   .BUF 1
  16. VDC╫IN╙TART  .BUF 2
  17. VDC╫IN╙AVE╙Z .BUF 2
  18. VDC╙CR╥OWS   .BYTE 25
  19. VDC╙CR├OLS   .BYTE 80
  20. VDC┬ACK├OLOR .BUF 1
  21. VDC├HAR      .BUF 8
  22.  
  23. VDC╙TARTUP = *
  24.    LDA #ACE═EM╬ULL
  25.    STA VDC╙CROLL╥EU╫ORK+3
  26.    LDA CONFIG┬UF+$C0
  27.    AND #$20
  28.    BEQ +
  29.    LDA #$FC
  30.    STA ALLOC╨ROC╔─
  31.    LDA #>7680
  32.    LDX #ACE═EM╥┼╒
  33.    LDY #ACE═EM╥┼╒
  34.    JSR KERN╨AGE┴LLOC
  35.    BCS +
  36.    LDX #3
  37. -  LDA MP,X
  38.    STA VDC╙CROLL╥EU╫ORK,X
  39.    DEX
  40.    BPL -
  41. +  RTS
  42.    
  43. VDC╔NIT = *
  44.    LDA VIC+$11
  45.    AND #%01111111
  46.    ORA #%00100000
  47.    STA VIC+$11
  48.    LDA VIC+$18
  49.    AND #$0F
  50.    ORA #$70
  51.    STA VIC+$18
  52.    LDA $DD00
  53.    AND #%11111100
  54.    STA $DD00
  55.    JSR VDC╫INMAX
  56.    LDA CONFIG┬UF+$D7
  57.    JSR RGBI2VIC
  58.    ASL
  59.    ASL
  60.    ASL
  61.    ASL
  62.    STA VDC┬ACK├OLOR
  63.    RTS
  64.  
  65. VDC╙HUTDOWN = *
  66.    LDA VIC+$11
  67.    AND #%00011111
  68.    STA VIC+$11
  69.    AND #$18
  70.    STA VIC+$18
  71.    LDA $DD00
  72.    AND #%11111100
  73.    ORA #%00000011
  74.    STA $DD00
  75.    RTS
  76.  
  77. VICBIT╫ORK .BUF 1
  78.  
  79. RGBI2VICBIT = *  ;.┴=COLOR, .┘=MOD╨ATTERN
  80.    PHA
  81.    AND #$0F
  82.    TAX
  83.    LDA RGBI2VIC╘AB,X
  84.    ASL
  85.    ASL
  86.    ASL
  87.    ASL
  88.    STA VICBIT╫ORK
  89.    TYA
  90.    AND #$20
  91.    BEQ +
  92.    PLA
  93.    LSR
  94.    LSR
  95.    LSR
  96.    LSR
  97.    TAX
  98.    LDA RGBI2VIC╘AB,X
  99.    JMP ++
  100. +  PLA
  101.    LDA VDC┬ACK├OLOR
  102. +  ORA VICBIT╫ORK
  103.    RTS
  104.  
  105. VICBIT2RGBI = *
  106.    BRK
  107.  
  108. VDC╫INMAX = *
  109.    LDA #0
  110.    STA VDC╫IN╙TART+0
  111.    STA VDC╫IN╙TART+1
  112.    STA VDC╫IN╙CR╪
  113.    STA VDC╫IN╙CR┘
  114.    LDA VDC╙CR╥OWS
  115.    LDX VDC╙CR├OLS
  116.    STA VDC╫IN╥OWS
  117.    STX VDC╫IN├OLS
  118.    LDA #<8000+1000+16
  119.    LDY #>8000+1000+16
  120.    STA VDC╫IN╙AVE╙Z+0
  121.    STY VDC╫IN╙AVE╙Z+1
  122.    JSR CON╫IN├HANGE├ALLBACK
  123.    CLC
  124.    RTS
  125.  
  126. VDC├LS├OLOR .BUF 1
  127.  
  128. VDC╫INCLS = *
  129.    LDX #$00         ;FORCED FILL PATTERN, FOR NOW
  130.    VDC╫INCLS╨ATTERN = *
  131.    STX VDC╞ILL┬YTE
  132.    STA SYSWORK+2
  133.    TYA
  134.    LDY SYSWORK+2
  135.    JSR RGBI2VICBIT
  136.    STA VDC├LS├OLOR
  137.    BIT SYSWORK+2
  138.    BPL +
  139.    JSR VDC╫INCLS╙ETUP
  140.    JSR VDC┴DD├HAR
  141.    JSR VDC╥OW╞ILL
  142. +  BIT SYSWORK+2
  143.    BVC +
  144.    LDA VDC├LS├OLOR
  145.    STA VDC╞ILL┬YTE
  146.    JSR VDC╫INCLS╙ETUP
  147.    JSR VDC┴DD├OLOR
  148.    LDA #BK╥AM0
  149.    STA BK╙ELECT
  150.    JSR VDC╥OW╞ILL├OLOR
  151.    LDA #BK┴├┼
  152.    STA BK╙ELECT
  153. +  RTS
  154.  
  155. VDC╫INCLS╙ETUP = *
  156.    LDA VDC╫IN╙TART+0
  157.    LDY VDC╫IN╙TART+1
  158.    STA SYSWORK+0
  159.    STY SYSWORK+1
  160.    LDA VDC╫IN╥OWS
  161.    STA VDC╞ILL╥OWS
  162.    RTS
  163.  
  164. VDC┴DD├HAR = *
  165.    LDA SYSWORK+1
  166.    ASL SYSWORK+0
  167.    ROL
  168.    ASL SYSWORK+0
  169.    ROL
  170.    CLC
  171.    ADC #>VDC├HAR┴DDR
  172.    STA SYSWORK+1
  173.    RTS
  174.  
  175. VDC┴DD├OLOR = *
  176.    LDA SYSWORK+1
  177.    LSR
  178.    ROR SYSWORK+0
  179.    CLC
  180.    ADC #>VDC├OLOR┴DDR
  181.    STA SYSWORK+1
  182.    RTS
  183.  
  184. VDC╞ILL┬YTE .BUF 1
  185. VDC╞ILL╥OWS .BUF 1
  186. VDC╞ILL├OLS .BUF 1
  187.  
  188. VDC╥OW╞ILL = * ;( (SW+0)=ADDR++, VDC╞ILL┬YTE, VDC╞ILL╥OWS-- )
  189.    LDA VDC╫IN├OLS
  190.    STA VDC╞ILL├OLS
  191.    LDA VDC╞ILL╥OWS
  192.    BNE +
  193.    RTS
  194. /  JSR VDC├OL╞ILL
  195.    CLC
  196.    LDA SYSWORK+0
  197.    ADC #<VDC╥OW╨HYS╔NC
  198.    STA SYSWORK+0
  199.    LDA SYSWORK+1
  200.    ADC #>VDC╥OW╨HYS╔NC
  201.    STA SYSWORK+1
  202.    DEC VDC╞ILL╥OWS
  203.    BNE -
  204.    RTS
  205.  
  206. VDC╥OW╞ILL├OLOR = * ;( (SW+0)=ADDR++, VDC╞ILL┬YTE, VDC╞ILL╥OWS-- )
  207.    LDA VDC╫IN├OLS
  208.    STA VDC╞ILL├OLS
  209.    LDA VDC╞ILL╥OWS
  210.    BNE +
  211.    RTS
  212. /  JSR VDC├OL╞ILL
  213.    CLC
  214.    LDA SYSWORK+0
  215.    ADC #<VDC├OLOR╔NC
  216.    STA SYSWORK+0
  217.    LDA SYSWORK+1
  218.    ADC #>VDC├OLOR╔NC
  219.    STA SYSWORK+1
  220.    DEC VDC╞ILL╥OWS
  221.    BNE -
  222.    RTS
  223.  
  224. VDC├OL╞ILL = * ;( (SW+0)=ADDR, VDC╞ILL┬YTE, VDC╞ILL├OLS )
  225. VDC├OL╞ILL╟OT┴DDR = *
  226.    LDY VDC╞ILL├OLS
  227.    BEQ ++
  228.    LDA SYSWORK+1
  229.    CMP #>VDC├HAR┴DDR
  230.    BCS VDC├OL╞ILL┬ITMAP
  231.    LDA VDC╞ILL├OLS
  232.    CLC
  233.    ADC #1 ;ROUND UP
  234.    LSR
  235.    TAY
  236.    BEQ ++
  237.  
  238.    VDC├OLF256 = *
  239.    LDA VDC╞ILL┬YTE
  240.    DEY
  241.    BEQ +
  242. -  STA (SYSWORK+0),Y
  243.    DEY
  244.    BNE -
  245. +  STA (SYSWORK+0),Y
  246. +  RTS
  247.  
  248.    VDC├OL╞ILL┬ITMAP = *
  249.    LDA VDC╞ILL├OLS
  250.    AND #%11111110
  251.    ASL
  252.    ASL
  253.    TAY
  254.    BCC VDC├OLF256
  255.    INC SYSWORK+1
  256.    JSR VDC├OLF256
  257.    DEC SYSWORK+1
  258.    LDY #0
  259.    JMP VDC├OLF256
  260.  
  261. VDC╫INSET╥OWS .BUF 1
  262. VDC╫INSET├OLS .BUF 1
  263.  
  264. VDC╫INSET = *
  265.    CLC
  266.    RTS
  267.  
  268. VDC╫INSIZE = *
  269.    LDA VDC╫IN╙TART+0
  270.    LDY VDC╫IN╙TART+1
  271.    STA SYSWORK+2
  272.    STY SYSWORK+3
  273.    LDA #<VDC╥OW╔NC
  274.    LDY #>VDC╥OW╔NC
  275.    STA SYSWORK+4
  276.    STY SYSWORK+5
  277.    LDA VDC╫IN╙CR┘
  278.    LDX VDC╫IN╙CR╪
  279.    STA SYSWORK+0
  280.    STX SYSWORK+1
  281.    LDA VDC╫IN╥OWS
  282.    LDX VDC╫IN├OLS
  283.    CLC
  284.    RTS
  285.  
  286. VDC╨UT╫HICH .BUF 1
  287. VDC╨UT├OLOR .BUF 1
  288. VDC╨UT╠EN   .BUF 1
  289. VDC┴DDR     .BUF 2
  290. VDC╨OS      .BUF 1
  291.  
  292. VDC╫INPUT = *
  293.    STA VDC╨UT╫HICH
  294.    STX VDC╨UT╠EN
  295.    TYA
  296.    LDY VDC╨UT╫HICH
  297.    JSR RGBI2VICBIT
  298.    STA VDC╞ILL┬YTE
  299.    LDA SYSWORK+0
  300.    LDY SYSWORK+1
  301.    STA VDC┴DDR+0
  302.    STY VDC┴DDR+1
  303.    JSR VDC┴DD├HAR
  304.    LDA #BK╥AM0
  305.    STA BK╙ELECT
  306.    BIT VDC╨UT╫HICH
  307.    BMI +
  308.    JMP VDC╫INPUT├OLOR
  309. +  LDY #0
  310.    STY VDC╨OS
  311.  
  312.    VDC╫INPUT╬EXT = *
  313.    LDY VDC╨OS
  314.    CPY VDC╨UT╠EN
  315.    BCS +
  316.    LDA (SYSWORK+2),Y 
  317.    JMP +++
  318. +  CPY SYSWORK+5
  319.    BCC +
  320.    JMP VDC╫INPUT├OLOR
  321. +  LDA SYSWORK+4
  322.  
  323.    ;** LOCATE CHARACTER
  324. +  LDY #0
  325.    STY SYSWORK+7
  326.    ASL
  327.    ROL SYSWORK+7
  328.    ASL
  329.    ROL SYSWORK+7
  330.    CLC
  331.    ADC #<CHARSET4BIT
  332.    STA SYSWORK+6
  333.    LDA SYSWORK+7
  334.    ADC #>CHARSET4BIT
  335.    STA SYSWORK+7
  336.  
  337.    VDC╫INPUT╠HS = *
  338.    LDA SYSWORK+0
  339.    AND #$07
  340.    BNE VDC╫INPUT╥HS
  341.    LDY #0
  342.    LDX #0
  343. -  LDA (SYSWORK+6),Y
  344.    AND #$F0
  345.    STA VDC├HAR,X
  346.    INX
  347.    LDA (SYSWORK+6),Y
  348.    ASL
  349.    ASL
  350.    ASL
  351.    ASL
  352.    STA VDC├HAR,X
  353.    INX
  354.    INY
  355.    CPY #4
  356.    BCC -
  357.    LDY #7
  358. -  LDA (SYSWORK+0),Y
  359.    AND #$0F
  360.    ORA VDC├HAR,Y
  361.    STA (SYSWORK+0),Y
  362.    DEY
  363.    BPL -
  364.    JMP VDC╫INPUT├ONT
  365.  
  366.    VDC╫INPUT╥HS = *
  367.    LDA SYSWORK+0
  368.    AND #%11111000
  369.    STA SYSWORK+0
  370.    LDY #0
  371.    LDX #0
  372. -  LDA (SYSWORK+6),Y
  373.    LSR
  374.    LSR
  375.    LSR
  376.    LSR
  377.    STA VDC├HAR,X
  378.    INX
  379.    LDA (SYSWORK+6),Y
  380.    AND #$0F
  381.    STA VDC├HAR,X
  382.    INX
  383.    INY
  384.    CPY #4
  385.    BCC -
  386.    LDY #7
  387. -  LDA (SYSWORK+0),Y
  388.    AND #$F0
  389.    ORA VDC├HAR,Y
  390.    STA (SYSWORK+0),Y
  391.    DEY
  392.    BPL -
  393.    LDA SYSWORK+0
  394.    ORA #%00000100
  395.    STA SYSWORK+0
  396.  
  397.    VDC╫INPUT├ONT = *
  398.    INC VDC╨OS
  399.    CLC
  400.    LDA SYSWORK+0
  401.    ADC #4
  402.    STA SYSWORK+0
  403.    BCC +
  404.    INC SYSWORK+1
  405. +  JMP VDC╫INPUT╬EXT
  406.  
  407.    VDC╫INPUT├OLOR = *
  408.    BIT VDC╨UT╫HICH
  409.    BVC VDC╫INPUT┼XIT
  410.    LDA VDC┴DDR+0
  411.    LDY VDC┴DDR+1
  412.    STA SYSWORK+0
  413.    STY SYSWORK+1
  414.    JSR VDC┴DD├OLOR
  415.    LDA SYSWORK+5
  416.    STA VDC╞ILL├OLS
  417.    JSR VDC├OL╞ILL
  418.  
  419.    VDC╫INPUT┼XIT = *
  420.    LDA #BK┴├┼
  421.    STA BK╙ELECT
  422.    LDA VDC┴DDR+0
  423.    LDY VDC┴DDR+1
  424.    STA SYSWORK+0
  425.    STY SYSWORK+1
  426.    ;PLP $$$
  427.    RTS
  428.  
  429. VDC╫INCOLOR = *
  430.    PHP
  431.    SEI
  432.    CMP #128
  433.    BCC +
  434.    PHA
  435.    TXA
  436.    JSR RGBI2VIC
  437.    STA VIC+$21
  438.    ASL
  439.    ASL
  440.    ASL
  441.    ASL
  442.    STA VDC┬ACK├OLOR
  443.    PLA
  444. +  AND #64
  445.    BEQ VDC╫INCOLOR┼XIT
  446.    TYA
  447.    JSR RGBI2VIC
  448.    BIT VIC╙S┴CTIVE
  449.    BMI +
  450.    STA VIC+$20
  451.    JMP VDC╫INCOLOR┼XIT
  452. +  STA VIC╙S├OLOR
  453.  
  454.    VDC╫INCOLOR┼XIT = *
  455.    BIT VIC╙S┴CTIVE
  456.    BMI +
  457.    LDA VIC+$20
  458.    JMP ++
  459. +  LDA VIC╙S├OLOR
  460. +  JSR VIC2RGBI
  461.    TAY
  462.    LDA VIC+$21
  463.    JSR VIC2RGBI
  464.    TAX
  465.    PLP
  466.    RTS
  467.  
  468. VDC╫INPOS = *
  469.    JSR VDC═ULT80
  470.    VDC╫INPOS┴DD = *
  471.    CLC
  472.    LDA SYSWORK+0
  473.    ADC VDC╫IN╙TART+0
  474.    STA SYSWORK+0
  475.    LDA SYSWORK+1
  476.    ADC VDC╫IN╙TART+1
  477.    STA SYSWORK+1
  478.    RTS
  479.  
  480. VDC╨OS320 = *
  481.    JSR VDC═ULT320
  482.    JSR VDC╫INPOS┴DD
  483.    VDC╨OS┴DD = *
  484.    CLC
  485.    LDA SYSWORK+0
  486.    ADC #<VDC├HAR┴DDR
  487.    STA SYSWORK+0
  488.    LDA SYSWORK+1
  489.    ADC #>VDC├HAR┴DDR
  490.    STA SYSWORK+1
  491.    RTS
  492.  
  493. VDC═ULT320 = * ;( .┴=ROW:0-50, .╪=COL ) : (SW+0)=(ROW*80+COL)*4
  494.    JSR VDC═ULT80
  495.    ASL SYSWORK+0
  496.    ROL SYSWORK+1
  497.    ASL SYSWORK+0
  498.    ROL SYSWORK+1
  499.    RTS
  500.  
  501. VDC═ULT80 = *  ;( .┴=ROW:0-50, .╪=COL ) : (SW+0)=ROW*80+COL, .╪:UNCH
  502.    STA SYSWORK+0
  503.    LDY #0
  504.    STY SYSWORK+1
  505.    ASL
  506.    ASL
  507.    ADC SYSWORK+0
  508.    ASL
  509.    ROL SYSWORK+1
  510.    ASL
  511.    ROL SYSWORK+1
  512.    ASL
  513.    ROL SYSWORK+1
  514.    ASL
  515.    ROL SYSWORK+1
  516.    STX SYSWORK+0
  517.    CLC
  518.    ADC SYSWORK+0
  519.    BCC +
  520.    INC SYSWORK+1
  521. +  STA SYSWORK+0
  522.    RTS
  523.  
  524. VDC├URSOR╞LASH .BYTE $00  ;$00=INACTIVE, $FF=ACTIVE
  525. VDC├URSOR╙TATE .BUF 1     ;$00=FLASH╧FF, $FF=FLASH╧N
  526. VDC├URSOR├OUNTDOWN .BUF 1
  527. VDC├URSOR┴DDR  .BUF 2
  528.  
  529. VDC╫INCURSOR = *
  530.    CMP #0
  531.    BEQ VDC├URSOR╧FF
  532.    ;XX IGNORE COLOR
  533.    JSR VDC┴DD├HAR
  534.    LDA SYSWORK+0
  535.    LDY SYSWORK+1
  536.    STA VDC├URSOR┴DDR+0
  537.    STY VDC├URSOR┴DDR+1
  538.    LDA #0
  539.    STA VDC├URSOR╙TATE
  540.    LDA #1
  541.    STA VDC├URSOR├OUNTDOWN
  542.    JSR VDC╔RQ├URSOR┼NTER
  543.    LDA #$FF
  544.    STA VDC├URSOR╞LASH
  545.    RTS
  546.  
  547. VDC├URSOR╧FF = *
  548.    ;XX IGNORE GIVEN ADDR
  549.    LDA #0
  550.    STA VDC├URSOR╞LASH
  551.    LDA VDC├URSOR╙TATE
  552.    BEQ +
  553.    LDA #1
  554.    STA VDC├URSOR├OUNTDOWN
  555.    JSR VDC╔RQ├URSOR┼NTER
  556. +  RTS
  557.  
  558. VDC╔RQ╫ORK = $A0
  559. VDC├URSOR═ASK .BUF 1
  560.  
  561. VDC╔RQ├URSOR = *
  562.    BIT VDC├URSOR╞LASH
  563.    BMI VDC╔RQ├URSOR┼NTER
  564. -  RTS
  565.    VDC╔RQ├URSOR┼NTER = *
  566.    DEC VDC├URSOR├OUNTDOWN
  567.    BNE -
  568.    LDA #20
  569.    STA VDC├URSOR├OUNTDOWN
  570.    LDA VDC├URSOR┴DDR+0
  571.    LDY VDC├URSOR┴DDR+1
  572.    AND #%11111000
  573.    STA VDC╔RQ╫ORK+0
  574.    STY VDC╔RQ╫ORK+1
  575.    LDX #$F0
  576.    LDA VDC├URSOR┴DDR+0
  577.    AND #%00000111
  578.    BEQ +
  579.    LDX #$0F
  580. +  STX VDC├URSOR═ASK
  581.    LDA #BK╥AM0
  582.    STA BK╙ELECT
  583.    LDY #7
  584. -  LDA (VDC╔RQ╫ORK),Y
  585.    EOR VDC├URSOR═ASK
  586.    STA (VDC╔RQ╫ORK),Y
  587.    DEY
  588.    BPL -
  589.    LDA #BK┴├┼
  590.    STA BK╙ELECT
  591.    LDA VDC├URSOR╙TATE
  592.    EOR #$FF
  593.    STA VDC├URSOR╙TATE
  594.    RTS
  595.  
  596. VDC╙CROLL╙OURCE = SYSWORK+0
  597. VDC╙CROLL─EST   = SYSWORK+2
  598. VDC╙CROLL┬YTES  = SYSWORK+4
  599. VDC╙CROLL╥OWS   .BUF 1
  600. VDC╙CROLL┼XTRA  .BUF 1
  601. VDC╙CROLL╥EU╫ORK .BUF 4
  602. VDC╙CROLL╞LAGS  .BUF 1
  603. VDC╙CROLL╞ILL├HAR .BUF 1
  604.  
  605. VDC╫INSCROLL = *
  606.    STA VDC╙CROLL╞LAGS
  607.    STY VDC├LS├OLOR
  608.    STX VDC╙CROLL┼XTRA
  609.    LDA SYSWORK+4
  610.    STA VDC╙CROLL╞ILL├HAR
  611.    CPX #0
  612.    BNE +
  613. -  RTS
  614. +  LDA VDC╙CROLL╞LAGS
  615.    AND #$08
  616.    BEQ -
  617.    CPX VDC╫IN╥OWS
  618.    BCC +
  619.    LDX VDC╙CROLL╞ILL├HAR
  620.    LDA VDC╙CROLL╞LAGS
  621.    LDY VDC├LS├OLOR
  622.    JSR VDC╫INCLS
  623.    RTS
  624. +  BIT VDC╙CROLL╞LAGS
  625.    BPL +
  626.    ;** SCROLL CHARACTERS
  627.    JSR VDC╞AST╙CROLL╒P
  628. +  BIT VDC╙CROLL╞LAGS
  629.    BVC +
  630.    ;XX SCROLL COLORS
  631. +  RTS
  632.  
  633. VDC╞AST╙CROLL╒P = *
  634.    ;** SET LENGTH
  635.    SEC
  636.    LDA VDC╫IN╥OWS
  637.    SBC VDC╙CROLL┼XTRA
  638.    LDX #0
  639.    JSR VDC═ULT320
  640.    LDA SYSWORK+0
  641.    LDY SYSWORK+1
  642.    STA VDC╙CROLL┬YTES+0
  643.    STY VDC╙CROLL┬YTES+1
  644.    ;** SET DEST
  645.    LDA #0
  646.    LDX #0
  647.    JSR VDC╨OS320
  648.    LDA SYSWORK+0
  649.    LDY SYSWORK+1
  650.    STA VDC╙CROLL─EST+0
  651.    STY VDC╙CROLL─EST+1
  652.    ;** SET SOURCE
  653.    LDA VDC╙CROLL┼XTRA
  654.    LDX #0
  655.    JSR VDC╨OS320
  656.    ;** SCROLL
  657.    JSR VDC├OPY╞ORWARD
  658.    ;** BLANK SCREEN BOTTOM
  659.    SEC
  660.    LDA VDC╫IN╥OWS
  661.    SBC VDC╙CROLL┼XTRA
  662.    LDX #0
  663.    JSR VDC╨OS320
  664.    LDA VDC╙CROLL┼XTRA
  665.    STA VDC╞ILL╥OWS
  666.    LDA #0
  667.    STA VDC╞ILL┬YTE
  668.    JSR VDC╥OW╞ILL
  669.    RTS
  670.  
  671. VDC├OPY╞ORWARD = *  ;( VDC╙CROLL╙OURCE, VDC╙CROLL─EST, VDC╙CROLL┬YTES )
  672.    LDA VDC╙CROLL╥EU╫ORK+3
  673.    CMP #ACE═EM╬ULL
  674.    BEQ +
  675.    JMP VDC├OPY╥EU
  676.    ;** SET UP SOFT COPY
  677. +  LDA #BK╥AM0
  678.    STA BK╙ELECT
  679.    LDA VDC╙CROLL╙OURCE+0
  680.    LDY VDC╙CROLL╙OURCE+1
  681.    STA VDC╞S╞ROM+1
  682.    STY VDC╞S╞ROM+2
  683.    LDA VDC╙CROLL─EST+0
  684.    LDY VDC╙CROLL─EST+1
  685.    STA VDC╞S╘O+1
  686.    STY VDC╞S╘O+2
  687.    LDY VDC╙CROLL┬YTES+1
  688.    LDX #0
  689.    ;** COPY
  690. VDC╞S╞ROM  LDA $FFFF,X
  691. VDC╞S╘O    STA $FFFF,X
  692.    INX
  693.    BNE VDC╞S╞ROM
  694.    INC VDC╞S╞ROM+2
  695.    INC VDC╞S╘O+2
  696.    DEY
  697.    BNE VDC╞S╞ROM
  698.    ;** COPY LAST PAGE
  699.    LDX #5
  700. -  LDA VDC╞S╞ROM,X
  701.    STA VDC├OPY╠AST,X
  702.    DEX
  703.    BPL -
  704.    LDX #0
  705.    CPX VDC╙CROLL┬YTES+0
  706.    BEQ +
  707.    VDC├OPY╠AST = *
  708.    LDA $FFFF,X
  709.    STA $FFFF,X
  710.    INX
  711.    CPX VDC╙CROLL┬YTES+0
  712.    BNE VDC├OPY╠AST
  713.    ;** FINISH
  714. +  LDA #BK┴├┼
  715.    STA BK╙ELECT
  716.    RTS
  717.  
  718. VDC├OPY╥EU╙AVE .BUF 10
  719.  
  720. VDC├OPY╥EU = *
  721.    LDX #7
  722. -  LDA ZP,X
  723.    STA VDC├OPY╥EU╙AVE+0,X
  724.    DEX
  725.    BPL -
  726.    LDA #%01110101
  727.    STA BK╙ELECT
  728.    LDA VDC╙CROLL╙OURCE+0
  729.    LDY VDC╙CROLL╙OURCE+1
  730.    STA ZP+0
  731.    STY ZP+1
  732.    LDX #3
  733. -  LDA VDC╙CROLL╥EU╫ORK,X
  734.    STA MP,X
  735.    DEX
  736.    BPL -
  737.    LDA VDC╙CROLL┬YTES+0
  738.    LDY VDC╙CROLL┬YTES+1
  739.    JSR STASH
  740.    LDA VDC╙CROLL─EST+0
  741.    LDY VDC╙CROLL─EST+1
  742.    STA ZP+0
  743.    STY ZP+1
  744.    LDA VDC╙CROLL┬YTES+0
  745.    LDY VDC╙CROLL┬YTES+1
  746.    JSR FETCH
  747.    LDA #BK┴├┼
  748.    STA BK╙ELECT
  749.    LDX #7
  750. -  LDA VDC├OPY╥EU╙AVE+0,X
  751.    STA ZP,X
  752.    DEX
  753.    BPL -
  754.    RTS
  755.  
  756. ;*** INTERRUPT SCREEN-SAVER: WORK HANDLED BY ╓╔├ SCREEN DRIVER
  757.  
  758. VDC╙S├OLOR  .BUF 1
  759. VDC╙S═ODE   .BUF 1
  760. VDC╙S┴CTIVE .BYTE $00
  761.  
  762. VDC╙CREEN╙AVE = *
  763.    RTS
  764.  
  765. VDC╙CREEN╒NSAVE = *
  766.    RTS
  767.  
  768. VDC┬M├OLOR .BUF 1
  769.  
  770. ACE╟R╙CREEN = *
  771.    STY VDC┬M├OLOR
  772.    LDA CONFIG┬UF+$C0
  773.    BMI +
  774.    LDA #ACE┼RR╬O╟RAPHICS╙PACE
  775.    STA ERRNO
  776.    SEC
  777.    RTS
  778. +  TXA
  779.    JSR RGBI2VIC
  780.    STA VIC+$20
  781.    JSR VDC╔NIT
  782.    LDA #$E0
  783.    LDX #$00
  784.    LDY VDC┬M├OLOR
  785.    JSR VDC╫INCLS╨ATTERN
  786.    LDA #200
  787.    LDY #0
  788.    STA SYSWORK+0
  789.    STY SYSWORK+1
  790.    LDA #40
  791.    LDX #1
  792.    CLC
  793.    RTS
  794.  
  795. ACE╟R┼XIT = *
  796.    LDX #40
  797.    BIT TEXT═ODE
  798.    BPL +
  799.    LDX #80
  800. +  LDA #25
  801.    JSR CONSCREEN
  802.    CLC
  803.    RTS
  804.  
  805. ACE╟R╞ILL = *
  806.    TAX
  807.    LDA #$80
  808.    JSR VDC╫INCLS╨ATTERN
  809.    CLC
  810.    RTS
  811.  
  812. GRLOAD├OLS .BUF 1
  813. GRLOAD╥OWS .BUF 1
  814. GRLOAD├OL  .BUF 1
  815.  
  816. ACE╟R╠OAD = *
  817.    STA GRLOAD├OL
  818.    STX GRLOAD├OLS
  819.    STY GRLOAD╥OWS
  820.    LDA SYSWORK+0
  821.    PHA
  822.    LSR
  823.    LSR
  824.    LSR
  825.    LDX #0
  826.    JSR VDC═ULT320
  827.    PLA
  828.    AND #$07
  829.    CLC
  830.    ADC SYSWORK+0
  831.    STA SYSWORK+0
  832.    BCC +
  833.    INC SYSWORK+1
  834. +  LDA GRLOAD├OL
  835.    LDY #0
  836.    STY SYSWORK+4
  837.    LDX #3
  838. -  ASL
  839.    ROL SYSWORK+4
  840.    DEX
  841.    BNE -
  842.    CLC
  843.    ADC SYSWORK+0
  844.    STA SYSWORK+0
  845.    LDA SYSWORK+1
  846.    ADC SYSWORK+4
  847.    STA SYSWORK+1
  848.    JSR VDC╨OS┴DD
  849.    LDA GRLOAD├OLS
  850.    BNE +
  851.    CLC
  852.    RTS
  853. +  LDY #0
  854. -  LDA (SYSWORK+2),Y
  855.    STY SYSWORK+4
  856.    LDY #0
  857.    STA (SYSWORK+0),Y
  858.    LDY SYSWORK+4
  859.    CLC
  860.    LDA SYSWORK+0
  861.    ADC #8
  862.    STA SYSWORK+0
  863.    BCC +
  864.    INC SYSWORK+1
  865. +  INY
  866.    CPY GRLOAD├OLS
  867.    BCC -
  868.    CLC
  869.    RTS
  870.  
  871. ;THE END + BLANK LINE
  872.  
  873.