home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / ACE-R11-SCR1.ARC / ACEVIC80.S < prev    next >
Encoding:
Text File  |  2019-04-13  |  11.4 KB  |  768 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.    STX VDC╞ILL┬YTE
  131.    STA SYSWORK+2
  132.    TYA
  133.    LDY SYSWORK+2
  134.    JSR RGBI2VICBIT
  135.    STA VDC├LS├OLOR
  136.    BIT SYSWORK+2
  137.    BPL +
  138.    JSR VDC╫INCLS╙ETUP
  139.    JSR VDC┴DD├HAR
  140.    JSR VDC╥OW╞ILL
  141. +  BIT SYSWORK+2
  142.    BVC +
  143.    LDA VDC├LS├OLOR
  144.    STA VDC╞ILL┬YTE
  145.    JSR VDC╫INCLS╙ETUP
  146.    JSR VDC┴DD├OLOR
  147.    LDA #BK╥AM0
  148.    STA BK╙ELECT
  149.    JSR VDC╥OW╞ILL├OLOR
  150.    LDA #BK┴├┼
  151.    STA BK╙ELECT
  152. +  RTS
  153.  
  154. VDC╫INCLS╙ETUP = *
  155.    LDA VDC╫IN╙TART+0
  156.    LDY VDC╫IN╙TART+1
  157.    STA SYSWORK+0
  158.    STY SYSWORK+1
  159.    LDA VDC╫IN╥OWS
  160.    STA VDC╞ILL╥OWS
  161.    RTS
  162.  
  163. VDC┴DD├HAR = *
  164.    LDA SYSWORK+1
  165.    ASL SYSWORK+0
  166.    ROL
  167.    ASL SYSWORK+0
  168.    ROL
  169.    CLC
  170.    ADC #>VDC├HAR┴DDR
  171.    STA SYSWORK+1
  172.    RTS
  173.  
  174. VDC┴DD├OLOR = *
  175.    LDA SYSWORK+1
  176.    LSR
  177.    ROR SYSWORK+0
  178.    CLC
  179.    ADC #>VDC├OLOR┴DDR
  180.    STA SYSWORK+1
  181.    RTS
  182.  
  183. VDC╞ILL┬YTE .BUF 1
  184. VDC╞ILL╥OWS .BUF 1
  185. VDC╞ILL├OLS .BUF 1
  186.  
  187. VDC╥OW╞ILL = * ;( (SW+0)=ADDR++, VDC╞ILL┬YTE, VDC╞ILL╥OWS-- )
  188.    LDA VDC╫IN├OLS
  189.    STA VDC╞ILL├OLS
  190.    LDA VDC╞ILL╥OWS
  191.    BNE +
  192.    RTS
  193. /  JSR VDC├OL╞ILL
  194.    CLC
  195.    LDA SYSWORK+0
  196.    ADC #<VDC╥OW╨HYS╔NC
  197.    STA SYSWORK+0
  198.    LDA SYSWORK+1
  199.    ADC #>VDC╥OW╨HYS╔NC
  200.    STA SYSWORK+1
  201.    DEC VDC╞ILL╥OWS
  202.    BNE -
  203.    RTS
  204.  
  205. VDC╥OW╞ILL├OLOR = * ;( (SW+0)=ADDR++, VDC╞ILL┬YTE, VDC╞ILL╥OWS-- )
  206.    LDA VDC╫IN├OLS
  207.    STA VDC╞ILL├OLS
  208.    LDA VDC╞ILL╥OWS
  209.    BNE +
  210.    RTS
  211. /  JSR VDC├OL╞ILL
  212.    CLC
  213.    LDA SYSWORK+0
  214.    ADC #<VDC├OLOR╔NC
  215.    STA SYSWORK+0
  216.    LDA SYSWORK+1
  217.    ADC #>VDC├OLOR╔NC
  218.    STA SYSWORK+1
  219.    DEC VDC╞ILL╥OWS
  220.    BNE -
  221.    RTS
  222.  
  223. VDC├OL╞ILL = * ;( (SW+0)=ADDR, VDC╞ILL┬YTE, VDC╞ILL├OLS )
  224. VDC├OL╞ILL╟OT┴DDR = *
  225.    LDY VDC╞ILL├OLS
  226.    BEQ ++
  227.    LDA SYSWORK+1
  228.    CMP #>VDC├HAR┴DDR
  229.    BCS VDC├OL╞ILL┬ITMAP
  230.    LDA VDC╞ILL├OLS
  231.    CLC
  232.    ADC #1 ;ROUND UP
  233.    LSR
  234.    TAY
  235.    BEQ ++
  236.  
  237.    VDC├OLF256 = *
  238.    LDA VDC╞ILL┬YTE
  239.    DEY
  240.    BEQ +
  241. -  STA (SYSWORK+0),Y
  242.    DEY
  243.    BNE -
  244. +  STA (SYSWORK+0),Y
  245. +  RTS
  246.  
  247.    VDC├OL╞ILL┬ITMAP = *
  248.    LDA VDC╞ILL├OLS
  249.    AND #%11111110
  250.    ASL
  251.    ASL
  252.    TAY
  253.    BCC VDC├OLF256
  254.    INC SYSWORK+1
  255.    JSR VDC├OLF256
  256.    DEC SYSWORK+1
  257.    LDY #0
  258.    JMP VDC├OLF256
  259.  
  260. VDC╫INSET╥OWS .BUF 1
  261. VDC╫INSET├OLS .BUF 1
  262.  
  263. VDC╫INSET = *
  264.    CLC
  265.    RTS
  266.  
  267. VDC╫INSIZE = *
  268.    LDA VDC╫IN╙TART+0
  269.    LDY VDC╫IN╙TART+1
  270.    STA SYSWORK+2
  271.    STY SYSWORK+3
  272.    LDA #<VDC╥OW╔NC
  273.    LDY #>VDC╥OW╔NC
  274.    STA SYSWORK+4
  275.    STY SYSWORK+5
  276.    LDA VDC╫IN╙CR┘
  277.    LDX VDC╫IN╙CR╪
  278.    STA SYSWORK+0
  279.    STX SYSWORK+1
  280.    LDA VDC╫IN╥OWS
  281.    LDX VDC╫IN├OLS
  282.    CLC
  283.    RTS
  284.  
  285. VDC╨UT╫HICH .BUF 1
  286. VDC╨UT├OLOR .BUF 1
  287. VDC╨UT╠EN   .BUF 1
  288. VDC┴DDR     .BUF 2
  289. VDC╨OS      .BUF 1
  290.  
  291. VDC╫INPUT = *
  292.    STA VDC╨UT╫HICH
  293.    STX VDC╨UT╠EN
  294.    TYA
  295.    LDY VDC╨UT╫HICH
  296.    JSR RGBI2VICBIT
  297.    STA VDC╞ILL┬YTE
  298.    LDA SYSWORK+0
  299.    LDY SYSWORK+1
  300.    STA VDC┴DDR+0
  301.    STY VDC┴DDR+1
  302.    JSR VDC┴DD├HAR
  303.    LDA #BK╥AM0
  304.    STA BK╙ELECT
  305.    BIT VDC╨UT╫HICH
  306.    BMI +
  307.    JMP VDC╫INPUT├OLOR
  308. +  LDY #0
  309.    STY VDC╨OS
  310.  
  311.    VDC╫INPUT╬EXT = *
  312.    LDY VDC╨OS
  313.    CPY VDC╨UT╠EN
  314.    BCS +
  315.    LDA (SYSWORK+2),Y 
  316.    JMP +++
  317. +  CPY SYSWORK+5
  318.    BCC +
  319.    JMP VDC╫INPUT├OLOR
  320. +  LDA SYSWORK+4
  321.  
  322.    ;** LOCATE CHARACTER
  323. +  LDY #0
  324.    STY SYSWORK+7
  325.    ASL
  326.    ROL SYSWORK+7
  327.    ASL
  328.    ROL SYSWORK+7
  329.    CLC
  330.    ADC #<CHARSET4BIT
  331.    STA SYSWORK+6
  332.    LDA SYSWORK+7
  333.    ADC #>CHARSET4BIT
  334.    STA SYSWORK+7
  335.  
  336.    VDC╫INPUT╠HS = *
  337.    LDA SYSWORK+0
  338.    AND #$07
  339.    BNE VDC╫INPUT╥HS
  340.    LDY #0
  341.    LDX #0
  342. -  LDA (SYSWORK+6),Y
  343.    AND #$F0
  344.    STA VDC├HAR,X
  345.    INX
  346.    LDA (SYSWORK+6),Y
  347.    ASL
  348.    ASL
  349.    ASL
  350.    ASL
  351.    STA VDC├HAR,X
  352.    INX
  353.    INY
  354.    CPY #4
  355.    BCC -
  356.    LDY #7
  357. -  LDA (SYSWORK+0),Y
  358.    AND #$0F
  359.    ORA VDC├HAR,Y
  360.    STA (SYSWORK+0),Y
  361.    DEY
  362.    BPL -
  363.    JMP VDC╫INPUT├ONT
  364.  
  365.    VDC╫INPUT╥HS = *
  366.    LDA SYSWORK+0
  367.    AND #%11111000
  368.    STA SYSWORK+0
  369.    LDY #0
  370.    LDX #0
  371. -  LDA (SYSWORK+6),Y
  372.    LSR
  373.    LSR
  374.    LSR
  375.    LSR
  376.    STA VDC├HAR,X
  377.    INX
  378.    LDA (SYSWORK+6),Y
  379.    AND #$0F
  380.    STA VDC├HAR,X
  381.    INX
  382.    INY
  383.    CPY #4
  384.    BCC -
  385.    LDY #7
  386. -  LDA (SYSWORK+0),Y
  387.    AND #$F0
  388.    ORA VDC├HAR,Y
  389.    STA (SYSWORK+0),Y
  390.    DEY
  391.    BPL -
  392.    LDA SYSWORK+0
  393.    ORA #%00000100
  394.    STA SYSWORK+0
  395.  
  396.    VDC╫INPUT├ONT = *
  397.    INC VDC╨OS
  398.    CLC
  399.    LDA SYSWORK+0
  400.    ADC #4
  401.    STA SYSWORK+0
  402.    BCC +
  403.    INC SYSWORK+1
  404. +  JMP VDC╫INPUT╬EXT
  405.  
  406.    VDC╫INPUT├OLOR = *
  407.    BIT VDC╨UT╫HICH
  408.    BVC VDC╫INPUT┼XIT
  409.    LDA VDC┴DDR+0
  410.    LDY VDC┴DDR+1
  411.    STA SYSWORK+0
  412.    STY SYSWORK+1
  413.    JSR VDC┴DD├OLOR
  414.    LDA SYSWORK+5
  415.    STA VDC╞ILL├OLS
  416.    JSR VDC├OL╞ILL
  417.  
  418.    VDC╫INPUT┼XIT = *
  419.    LDA #BK┴├┼
  420.    STA BK╙ELECT
  421.    LDA VDC┴DDR+0
  422.    LDY VDC┴DDR+1
  423.    STA SYSWORK+0
  424.    STY SYSWORK+1
  425.    ;PLP $$$
  426.    RTS
  427.  
  428. VDC╫INCOLOR = *
  429.    PHP
  430.    SEI
  431.    CMP #128
  432.    BCC +
  433.    PHA
  434.    TXA
  435.    JSR RGBI2VIC
  436.    STA VIC+$21
  437.    ASL
  438.    ASL
  439.    ASL
  440.    ASL
  441.    STA VDC┬ACK├OLOR
  442.    PLA
  443. +  AND #64
  444.    BEQ VDC╫INCOLOR┼XIT
  445.    TYA
  446.    JSR RGBI2VIC
  447.    BIT VIC╙S┴CTIVE
  448.    BMI +
  449.    STA VIC+$20
  450.    JMP VDC╫INCOLOR┼XIT
  451. +  STA VIC╙S├OLOR
  452.  
  453.    VDC╫INCOLOR┼XIT = *
  454.    BIT VIC╙S┴CTIVE
  455.    BMI +
  456.    LDA VIC+$20
  457.    JMP ++
  458. +  LDA VIC╙S├OLOR
  459. +  JSR VIC2RGBI
  460.    TAY
  461.    LDA VIC+$21
  462.    JSR VIC2RGBI
  463.    TAX
  464.    PLP
  465.    RTS
  466.  
  467. VDC╫INPOS = *
  468.    JSR VDC═ULT80
  469.    VDC╫INPOS┴DD = *
  470.    CLC
  471.    LDA SYSWORK+0
  472.    ADC VDC╫IN╙TART+0
  473.    STA SYSWORK+0
  474.    LDA SYSWORK+1
  475.    ADC VDC╫IN╙TART+1
  476.    STA SYSWORK+1
  477.    RTS
  478.  
  479. VDC╨OS320 = *
  480.    JSR VDC═ULT320
  481.    JSR VDC╫INPOS┴DD
  482.    CLC
  483.    LDA SYSWORK+0
  484.    ADC #<VDC├HAR┴DDR
  485.    STA SYSWORK+0
  486.    LDA SYSWORK+1
  487.    ADC #>VDC├HAR┴DDR
  488.    STA SYSWORK+1
  489.    RTS
  490.  
  491. VDC═ULT320 = * ;( .┴=ROW:0-50, .╪=COL ) : (SW+0)=(ROW*80+COL)*4
  492.    JSR VDC═ULT80
  493.    ASL SYSWORK+0
  494.    ROL SYSWORK+1
  495.    ASL SYSWORK+0
  496.    ROL SYSWORK+1
  497.    RTS
  498.  
  499. VDC═ULT80 = *  ;( .┴=ROW:0-50, .╪=COL ) : (SW+0)=ROW*80+COL, .╪:UNCH
  500.    STA SYSWORK+0
  501.    LDY #0
  502.    STY SYSWORK+1
  503.    ASL
  504.    ASL
  505.    ADC SYSWORK+0
  506.    ASL
  507.    ROL SYSWORK+1
  508.    ASL
  509.    ROL SYSWORK+1
  510.    ASL
  511.    ROL SYSWORK+1
  512.    ASL
  513.    ROL SYSWORK+1
  514.    STX SYSWORK+0
  515.    CLC
  516.    ADC SYSWORK+0
  517.    BCC +
  518.    INC SYSWORK+1
  519. +  STA SYSWORK+0
  520.    RTS
  521.  
  522. VDC├URSOR╞LASH .BYTE $00  ;$00=INACTIVE, $FF=ACTIVE
  523. VDC├URSOR╙TATE .BUF 1     ;$00=FLASH╧FF, $FF=FLASH╧N
  524. VDC├URSOR├OUNTDOWN .BUF 1
  525. VDC├URSOR┴DDR  .BUF 2
  526.  
  527. VDC╫INCURSOR = *
  528.    CMP #0
  529.    BEQ VDC├URSOR╧FF
  530.    ;XX IGNORE COLOR
  531.    JSR VDC┴DD├HAR
  532.    LDA SYSWORK+0
  533.    LDY SYSWORK+1
  534.    STA VDC├URSOR┴DDR+0
  535.    STY VDC├URSOR┴DDR+1
  536.    LDA #0
  537.    STA VDC├URSOR╙TATE
  538.    LDA #1
  539.    STA VDC├URSOR├OUNTDOWN
  540.    JSR VDC╔RQ├URSOR┼NTER
  541.    LDA #$FF
  542.    STA VDC├URSOR╞LASH
  543.    RTS
  544.  
  545. VDC├URSOR╧FF = *
  546.    ;XX IGNORE GIVEN ADDR
  547.    LDA #0
  548.    STA VDC├URSOR╞LASH
  549.    LDA VDC├URSOR╙TATE
  550.    BEQ +
  551.    LDA #1
  552.    STA VDC├URSOR├OUNTDOWN
  553.    JSR VDC╔RQ├URSOR┼NTER
  554. +  RTS
  555.  
  556. VDC╔RQ╫ORK = $A0
  557. VDC├URSOR═ASK .BUF 1
  558.  
  559. VDC╔RQ├URSOR = *
  560.    BIT VDC├URSOR╞LASH
  561.    BMI VDC╔RQ├URSOR┼NTER
  562. -  RTS
  563.    VDC╔RQ├URSOR┼NTER = *
  564.    DEC VDC├URSOR├OUNTDOWN
  565.    BNE -
  566.    LDA #20
  567.    STA VDC├URSOR├OUNTDOWN
  568.    LDA VDC├URSOR┴DDR+0
  569.    LDY VDC├URSOR┴DDR+1
  570.    AND #%11111000
  571.    STA VDC╔RQ╫ORK+0
  572.    STY VDC╔RQ╫ORK+1
  573.    LDX #$F0
  574.    LDA VDC├URSOR┴DDR+0
  575.    AND #%00000111
  576.    BEQ +
  577.    LDX #$0F
  578. +  STX VDC├URSOR═ASK
  579.    LDA #BK╥AM0
  580.    STA BK╙ELECT
  581.    LDY #7
  582. -  LDA (VDC╔RQ╫ORK),Y
  583.    EOR VDC├URSOR═ASK
  584.    STA (VDC╔RQ╫ORK),Y
  585.    DEY
  586.    BPL -
  587.    LDA #BK┴├┼
  588.    STA BK╙ELECT
  589.    LDA VDC├URSOR╙TATE
  590.    EOR #$FF
  591.    STA VDC├URSOR╙TATE
  592.    RTS
  593.  
  594. VDC╙CROLL╙OURCE = SYSWORK+0
  595. VDC╙CROLL─EST   = SYSWORK+2
  596. VDC╙CROLL┬YTES  = SYSWORK+4
  597. VDC╙CROLL╥OWS   .BUF 1
  598. VDC╙CROLL┼XTRA  .BUF 1
  599. VDC╙CROLL╥EU╫ORK .BUF 4
  600. VDC╙CROLL╞LAGS  .BUF 1
  601. VDC╙CROLL╞ILL├HAR .BUF 1
  602.  
  603. VDC╫INSCROLL = *
  604.    STA VDC╙CROLL╞LAGS
  605.    STY VDC├LS├OLOR
  606.    STX VDC╙CROLL┼XTRA
  607.    LDA SYSWORK+4
  608.    STA VDC╙CROLL╞ILL├HAR
  609.    CPX #0
  610.    BNE +
  611. -  RTS
  612. +  LDA VDC╙CROLL╞LAGS
  613.    AND #$08
  614.    BEQ -
  615.    CPX VDC╫IN╥OWS
  616.    BCC +
  617.    LDX VDC╙CROLL╞ILL├HAR
  618.    LDA VDC╙CROLL╞LAGS
  619.    LDY VDC├LS├OLOR
  620.    JSR VDC╫INCLS
  621.    RTS
  622. +  BIT VDC╙CROLL╞LAGS
  623.    BPL +
  624.    ;** SCROLL CHARACTERS
  625.    JSR VDC╞AST╙CROLL╒P
  626. +  BIT VDC╙CROLL╞LAGS
  627.    BVC +
  628.    ;XX SCROLL COLORS
  629. +  RTS
  630.  
  631. VDC╞AST╙CROLL╒P = *
  632.    ;** SET LENGTH
  633.    SEC
  634.    LDA VDC╫IN╥OWS
  635.    SBC VDC╙CROLL┼XTRA
  636.    LDX #0
  637.    JSR VDC═ULT320
  638.    LDA SYSWORK+0
  639.    LDY SYSWORK+1
  640.    STA VDC╙CROLL┬YTES+0
  641.    STY VDC╙CROLL┬YTES+1
  642.    ;** SET DEST
  643.    LDA #0
  644.    LDX #0
  645.    JSR VDC╨OS320
  646.    LDA SYSWORK+0
  647.    LDY SYSWORK+1
  648.    STA VDC╙CROLL─EST+0
  649.    STY VDC╙CROLL─EST+1
  650.    ;** SET SOURCE
  651.    LDA VDC╙CROLL┼XTRA
  652.    LDX #0
  653.    JSR VDC╨OS320
  654.    ;** SCROLL
  655.    JSR VDC├OPY╞ORWARD
  656.    ;** BLANK SCREEN BOTTOM
  657.    SEC
  658.    LDA VDC╫IN╥OWS
  659.    SBC VDC╙CROLL┼XTRA
  660.    LDX #0
  661.    JSR VDC╨OS320
  662.    LDA VDC╙CROLL┼XTRA
  663.    STA VDC╞ILL╥OWS
  664.    LDA #0
  665.    STA VDC╞ILL┬YTE
  666.    JSR VDC╥OW╞ILL
  667.    RTS
  668.  
  669. VDC├OPY╞ORWARD = *  ;( VDC╙CROLL╙OURCE, VDC╙CROLL─EST, VDC╙CROLL┬YTES )
  670.    LDA VDC╙CROLL╥EU╫ORK+3
  671.    CMP #ACE═EM╬ULL
  672.    BEQ +
  673.    JMP VDC├OPY╥EU
  674.    ;** SET UP SOFT COPY
  675. +  LDA #BK╥AM0
  676.    STA BK╙ELECT
  677.    LDA VDC╙CROLL╙OURCE+0
  678.    LDY VDC╙CROLL╙OURCE+1
  679.    STA VDC╞S╞ROM+1
  680.    STY VDC╞S╞ROM+2
  681.    LDA VDC╙CROLL─EST+0
  682.    LDY VDC╙CROLL─EST+1
  683.    STA VDC╞S╘O+1
  684.    STY VDC╞S╘O+2
  685.    LDY VDC╙CROLL┬YTES+1
  686.    LDX #0
  687.    ;** COPY
  688. VDC╞S╞ROM  LDA $FFFF,X
  689. VDC╞S╘O    STA $FFFF,X
  690.    INX
  691.    BNE VDC╞S╞ROM
  692.    INC VDC╞S╞ROM+2
  693.    INC VDC╞S╘O+2
  694.    DEY
  695.    BNE VDC╞S╞ROM
  696.    ;** COPY LAST PAGE
  697.    LDX #5
  698. -  LDA VDC╞S╞ROM,X
  699.    STA VDC├OPY╠AST,X
  700.    DEX
  701.    BPL -
  702.    LDX #0
  703.    CPX VDC╙CROLL┬YTES+0
  704.    BEQ +
  705.    VDC├OPY╠AST = *
  706.    LDA $FFFF,X
  707.    STA $FFFF,X
  708.    INX
  709.    CPX VDC╙CROLL┬YTES+0
  710.    BNE VDC├OPY╠AST
  711.    ;** FINISH
  712. +  LDA #BK┴├┼
  713.    STA BK╙ELECT
  714.    RTS
  715.  
  716. VDC├OPY╥EU╙AVE .BUF 10
  717.  
  718. VDC├OPY╥EU = *
  719.    LDX #7
  720. -  LDA ZP,X
  721.    STA VDC├OPY╥EU╙AVE+0,X
  722.    DEX
  723.    BPL -
  724.    LDA #%01110101
  725.    STA BK╙ELECT
  726.    LDA VDC╙CROLL╙OURCE+0
  727.    LDY VDC╙CROLL╙OURCE+1
  728.    STA ZP+0
  729.    STY ZP+1
  730.    LDX #3
  731. -  LDA VDC╙CROLL╥EU╫ORK,X
  732.    STA MP,X
  733.    DEX
  734.    BPL -
  735.    LDA VDC╙CROLL┬YTES+0
  736.    LDY VDC╙CROLL┬YTES+1
  737.    JSR STASH
  738.    LDA VDC╙CROLL─EST+0
  739.    LDY VDC╙CROLL─EST+1
  740.    STA ZP+0
  741.    STY ZP+1
  742.    LDA VDC╙CROLL┬YTES+0
  743.    LDY VDC╙CROLL┬YTES+1
  744.    JSR FETCH
  745.    LDA #BK┴├┼
  746.    STA BK╙ELECT
  747.    LDX #7
  748. -  LDA VDC├OPY╥EU╙AVE+0,X
  749.    STA ZP,X
  750.    DEX
  751.    BPL -
  752.    RTS
  753.  
  754. ;*** INTERRUPT SCREEN-SAVER: WORK HANDLED BY ╓╔├ SCREEN DRIVER
  755.  
  756. VDC╙S├OLOR  .BUF 1
  757. VDC╙S═ODE   .BUF 1
  758. VDC╙S┴CTIVE .BYTE $00
  759.  
  760. VDC╙CREEN╙AVE = *
  761.    RTS
  762.  
  763. VDC╙CREEN╒NSAVE = *
  764.    RTS
  765.  
  766. ;THE END + BLANK LINE
  767.  
  768.