home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / ACE-R11-SCR1.ARC / ACEVIC.S < prev    next >
Encoding:
Text File  |  2019-04-13  |  8.2 KB  |  546 lines

  1. ;┴├┼-128/64 KERNEL ╓╔├ 40-COLUMN SCREEN DRIVER CODE
  2.  
  3. VIC├HAR┴DDR = $0400
  4. VIC├OLOR╧FF = $D400
  5. VIC╥OW╔NC = 40
  6. VIC = $D000
  7.  
  8. VIC╫IN╙CR╪   .BUF 1
  9. VIC╫IN╙CR┘   .BUF 1
  10. VIC╫IN╥OWS   .BUF 1
  11. VIC╫IN├OLS   .BUF 1
  12. VIC╫IN╙TART  .BUF 2
  13. VIC╫IN╙AVE╙Z .BUF 2
  14.  
  15. VIC╔NIT = *
  16.    LDA VIC+$11
  17.    AND #%00011111
  18.    STA VIC+$11
  19.    LDA #$18
  20.    STA VIC+$18
  21.    LDA $DD00
  22.    AND #%11111100
  23.    ORA #%00000011
  24.    STA $DD00
  25.    ;** WINDOW PARAMETERS
  26.    JSR VIC╫INMAX
  27.    RTS
  28.  
  29. VIC╙HUTDOWN = *
  30.    RTS
  31.  
  32. VIC╫INMAX = *
  33.    LDA #0
  34.    STA VIC╫IN╙CR╪
  35.    STA VIC╫IN╙CR┘
  36.    LDA #<VIC├HAR┴DDR
  37.    LDY #>VIC├HAR┴DDR
  38.    STA VIC╫IN╙TART+0
  39.    STY VIC╫IN╙TART+1
  40.    LDA #25
  41.    LDX #40
  42.    STA VIC╫IN╥OWS
  43.    STX VIC╫IN├OLS
  44.    LDA #<1000+1000+16
  45.    LDY #>1000+1000+16
  46.    STA VIC╫IN╙AVE╙Z+0
  47.    STY VIC╫IN╙AVE╙Z+1
  48.    JSR CON╫IN├HANGE├ALLBACK
  49.    CLC
  50.    RTS
  51.  
  52. RGBI2VIC╘AB .BYTE 0,11,6,14,5,13,12,3,2,10,8,4,9,7,15,1
  53.  
  54. RGBI2VIC = *
  55.    AND #$0F
  56.    TAX
  57.    LDA RGBI2VIC╘AB,X
  58.    RTS
  59.  
  60. VIC2RGBI╘AB .BYTE 0,15,8,7,11,4,2,13,10,12,9,1,6,5,3,14
  61.  
  62. VIC2RGBI = *
  63.    AND #$0F
  64.    TAX
  65.    LDA VIC2RGBI╘AB,X
  66.    RTS
  67.  
  68. VIC├LS├OLOR .BUF 1
  69.  
  70. VIC╫INCLS = *
  71.    STX VIC╞ILL┬YTE
  72.    STY VIC├LS├OLOR
  73.    STA SYSWORK+2
  74.    BIT SYSWORK+2
  75.    BPL +
  76.    JSR VIC╫INCLS╙ETUP
  77.    JSR VIC╥OW╞ILL
  78. +  BIT SYSWORK+2
  79.    BVC +
  80.    JSR VIC╫INCLS╙ETUP
  81.    LDA VIC├LS├OLOR
  82.    JSR RGBI2VIC
  83.    STA VIC╞ILL┬YTE
  84.    JSR VIC┴DD├OLOR
  85.    JSR VIC╥OW╞ILL
  86. +  RTS
  87.  
  88. VIC╫INCLS╙ETUP = *
  89.    LDA VIC╫IN╙TART+0
  90.    LDY VIC╫IN╙TART+1
  91.    STA SYSWORK+0
  92.    STY SYSWORK+1
  93.    LDA VIC╫IN╥OWS
  94.    STA VIC╞ILL╥OWS
  95.    RTS
  96.  
  97. VIC┴DD├OLOR = *
  98.    CLC
  99.    LDA SYSWORK+1
  100.    ADC #>VIC├OLOR╧FF
  101.    STA SYSWORK+1
  102.    RTS
  103.  
  104. VIC╞ILL┬YTE .BUF 1
  105. VIC╞ILL╥OWS .BUF 1
  106. VIC╞ILL├OLS .BUF 1
  107.  
  108. VIC╥OW╞ILL = * ;( (SW+0)=ADDR++, VIC╞ILL┬YTE, VIC╞ILL╥OWS-- )
  109.    LDA VIC╫IN├OLS
  110.    STA VIC╞ILL├OLS
  111.    LDA VIC╞ILL╥OWS
  112.    BNE +
  113.    RTS
  114. /  JSR VIC├OL╞ILL
  115.    CLC
  116.    LDA SYSWORK+0
  117.    ADC #VIC╥OW╔NC
  118.    STA SYSWORK+0
  119.    BCC +
  120.    INC SYSWORK+1
  121. +  DEC VIC╞ILL╥OWS
  122.    BNE -
  123.    RTS
  124.  
  125. VIC├OL╞ILL = * ;( (SW+0)=ADDR, VIC╞ILL┬YTE, VIC╞ILL├OLS )
  126.    LDY VIC╞ILL├OLS
  127.    BEQ +
  128.    DEY
  129.    LDA VIC╞ILL┬YTE
  130. -  STA (SYSWORK),Y
  131.    DEY
  132.    BPL -
  133. +  RTS
  134.  
  135. VIC╫INSET╥OWS .BUF 1
  136. VIC╫INSET├OLS .BUF 1
  137.  
  138. VIC╫INSET = *  ;%%%
  139.    STA VIC╫INSET╥OWS
  140.    CMP #0
  141.    BEQ VIC╫INSET┼RR
  142.    STX VIC╫INSET├OLS
  143.    CPX #0
  144.    BEQ VIC╫INSET┼RR
  145.    CLC
  146.    ADC SYSWORK+0
  147.    CMP #25
  148.    BEQ +
  149.    BCC +
  150.  
  151.    VIC╫INSET┼RR = *
  152.    LDA #ACE┼RR╔NVALID╫INDOW╨ARMS
  153.    STA ERRNO
  154.    SEC
  155.    RTS
  156.  
  157. +  CLC
  158.    LDA VIC╫INSET├OLS
  159.    ADC SYSWORK+1
  160.    CMP #40
  161.    BEQ +
  162.    BCS VIC╫INSET┼RR
  163. +  LDA SYSWORK+0
  164.    LDX SYSWORK+1
  165.    STA VIC╫IN╙CR╪
  166.    STX VIC╫IN╙CR┘
  167.    JSR VIC═ULT40
  168.    LDA SYSWORK+0
  169.    STA VIC╫IN╙TART+0
  170.    CLC
  171.    LDA SYSWORK+1
  172.    ADC #>VIC├HAR┴DDR
  173.    STA VIC╫IN╙TART+1
  174.    LDA VIC╫INSET╥OWS
  175.    LDX VIC╫INSET├OLS
  176.    STA VIC╫IN╥OWS
  177.    STX VIC╫IN├OLS
  178.    ;XX VIC╫IN╙AVE╙Z
  179.    JSR CON╫IN├HANGE├ALLBACK
  180.    LDA VIC╫IN╙CR╪
  181.    LDX VIC╫IN╙CR┘
  182.    STA SYSWORK+0
  183.    STX SYSWORK+1
  184.    CLC
  185.    RTS
  186.  
  187. VIC╫INSIZE = *
  188.    LDA VIC╫IN╙TART+0
  189.    LDY VIC╫IN╙TART+1
  190.    STA SYSWORK+2
  191.    STY SYSWORK+3
  192.    LDA #<VIC╥OW╔NC
  193.    LDY #>VIC╥OW╔NC
  194.    STA SYSWORK+4
  195.    STY SYSWORK+5
  196.    LDA VIC╫IN╙CR┘
  197.    LDX VIC╫IN╙CR╪
  198.    STA SYSWORK+0
  199.    STX SYSWORK+1
  200.    LDA VIC╫IN╥OWS
  201.    LDX VIC╫IN├OLS
  202.    CLC
  203.    RTS
  204.  
  205. VIC╨UT╫HICH .BUF 1
  206. VIC╨UT╠EN   .BUF 1
  207.  
  208. VIC╫INPUT = *
  209.    STA VIC╨UT╫HICH
  210.    STY VIC╞ILL┬YTE
  211.    STX VIC╨UT╠EN
  212.    BIT VIC╨UT╫HICH
  213.    BPL VIC╫INPUT├OLOR
  214.    LDY #0
  215.    CPY VIC╨UT╠EN
  216.    BEQ +
  217. -  LDA (SYSWORK+2),Y
  218.    STA (SYSWORK+0),Y
  219.    INY
  220.    CPY VIC╨UT╠EN
  221.    BCC -
  222. +  CPY SYSWORK+5
  223.    BEQ VIC╫INPUT├OLOR
  224.    LDA SYSWORK+4
  225. -  STA (SYSWORK+0),Y
  226.    INY
  227.    CPY SYSWORK+5
  228.    BCC -
  229.  
  230.    VIC╫INPUT├OLOR = *
  231.    BIT VIC╨UT╫HICH
  232.    BVS +
  233.    RTS
  234. +  CLC
  235.    LDA SYSWORK+1
  236.    ADC #>VIC├OLOR╧FF
  237.    STA SYSWORK+1
  238.    LDA VIC╞ILL┬YTE
  239.    JSR RGBI2VIC
  240.    LDY SYSWORK+5
  241.    DEY
  242.    BMI +
  243. -  STA (SYSWORK),Y
  244.    DEY
  245.    BPL -
  246. +  SEC
  247.    LDA SYSWORK+1
  248.    SBC #>VIC├OLOR╧FF
  249.    STA SYSWORK+1
  250.    RTS
  251.  
  252. VIC╫INCOLOR = *
  253.    PHP
  254.    SEI
  255.    CMP #128
  256.    BCC +
  257.    PHA
  258.    TXA
  259.    JSR RGBI2VIC
  260.    STA VIC+$21
  261.    PLA
  262. +  AND #64
  263.    BEQ VIC╫INCOLOR┼XIT
  264.    TYA
  265.    JSR RGBI2VIC
  266.    BIT VIC╙S┴CTIVE
  267.    BMI +
  268.    STA VIC+$20
  269.    JMP VIC╫INCOLOR┼XIT
  270. +  STA VIC╙S├OLOR
  271.  
  272.    VIC╫INCOLOR┼XIT = *
  273.    BIT VIC╙S┴CTIVE
  274.    BMI +
  275.    LDA VIC+$20
  276.    JMP ++
  277. +  LDA VIC╙S├OLOR
  278. +  JSR VIC2RGBI
  279.    TAY
  280.    LDA VIC+$21
  281.    JSR VIC2RGBI
  282.    TAX
  283.    PLP
  284.    RTS
  285.  
  286. VIC╫INPOS = *
  287.    JSR VIC═ULT40
  288.    CLC
  289.    LDA SYSWORK+0
  290.    ADC VIC╫IN╙TART+0
  291.    STA SYSWORK+0
  292.    LDA SYSWORK+1
  293.    ADC VIC╫IN╙TART+1
  294.    STA SYSWORK+1
  295.    RTS
  296.  
  297. VIC═ULT40 = *  ;( .┴=ROW:0-24, .╪=COL ) : (SW+0)=ROW*40+COL, .╪:UNCH
  298.    STA SYSWORK+0
  299.    LDY #0
  300.    STY SYSWORK+1
  301.    ASL
  302.    ASL
  303.    ADC SYSWORK+0
  304.    ASL
  305.    ROL SYSWORK+1
  306.    ASL
  307.    ROL SYSWORK+1
  308.    ASL
  309.    ROL SYSWORK+1
  310.    STX SYSWORK+0
  311.    CLC
  312.    ADC SYSWORK+0
  313.    BCC +
  314.    INC SYSWORK+1
  315. +  STA SYSWORK+0
  316.    RTS
  317.  
  318. VIC├URSOR├HAR  .BUF 1
  319. VIC├URSOR├OLOR .BUF 1
  320. VIC├URSOR╞LASH .BYTE $00  ;$00=INACTIVE, $FF=ACTIVE
  321. VIC├URSOR├OUNTDOWN .BUF 1
  322. VIC├URSOR┴DDR  .BUF 2
  323.  
  324. VIC╫INCURSOR = *
  325.    CMP #0
  326.    BEQ VIC├URSOR╧FF
  327.    TYA
  328.    JSR RGBI2VIC
  329.    STA VIC├URSOR├OLOR
  330.    LDA SYSWORK+0
  331.    LDY SYSWORK+1
  332.    STA VIC├URSOR┴DDR+0
  333.    STY VIC├URSOR┴DDR+1
  334.    LDY #0
  335.    LDA (SYSWORK+0),Y
  336.    STA VIC├URSOR├HAR
  337.    JSR VIC╙ET├OLOR┴DDR
  338.    LDY #0
  339.    LDA (SYSWORK+0),Y
  340.    TAX
  341.    LDA VIC├URSOR├OLOR
  342.    STA (SYSWORK+0),Y
  343.    STX VIC├URSOR├OLOR
  344.    JSR VIC╒NSET├OLOR┴DDR
  345.    LDA #1
  346.    STA VIC├URSOR├OUNTDOWN
  347.    JSR VIC╔RQ├URSOR┼NTER
  348.    LDA #$FF
  349.    STA VIC├URSOR╞LASH
  350.    RTS
  351.  
  352. VIC├URSOR╧FF = *
  353.    LDA #$00
  354.    STA VIC├URSOR╞LASH
  355.    LDY #0
  356.    LDA VIC├URSOR├HAR
  357.    STA (SYSWORK+0),Y
  358.    JSR VIC╙ET├OLOR┴DDR
  359.    LDA VIC├URSOR├OLOR
  360.    STA (SYSWORK+0),Y
  361.    JSR VIC╒NSET├OLOR┴DDR
  362.    RTS
  363.  
  364. VIC╔RQ╫ORK = $A0
  365.  
  366. VIC╔RQ├URSOR = *
  367.    BIT VIC├URSOR╞LASH
  368.    BMI VIC╔RQ├URSOR┼NTER
  369. -  RTS
  370.    VIC╔RQ├URSOR┼NTER = *
  371.    DEC VIC├URSOR├OUNTDOWN
  372.    BNE -
  373.    LDA #20
  374.    STA VIC├URSOR├OUNTDOWN
  375.    LDA VIC├URSOR┴DDR+0
  376.    LDY VIC├URSOR┴DDR+1
  377.    STA VIC╔RQ╫ORK+0
  378.    STY VIC╔RQ╫ORK+1
  379.    LDY #0
  380.    LDA (VIC╔RQ╫ORK),Y
  381.    PHA
  382.    SEC
  383.    SBC #32
  384.    AND #%01000000
  385.    BNE +
  386.    PLA
  387.    SEC
  388.    SBC #64
  389.    JMP ++
  390. +  PLA
  391.    CLC
  392.    ADC #64
  393. +  STA (VIC╔RQ╫ORK),Y
  394.    RTS
  395.  
  396. VIC╙ET├OLOR┴DDR = *  ;( (SW+0)=ADDR ) : (SW+0)=COLOR┴DDR
  397.    CLC
  398.    LDA SYSWORK+1
  399.    ADC #>VIC├OLOR╧FF
  400.    STA SYSWORK+1
  401.    RTS
  402.  
  403. VIC╒NSET├OLOR┴DDR = *  ;( (SW+0)=COLOR┴DDR ) : (SW+0)=ADDR
  404.    SEC
  405.    LDA SYSWORK+1
  406.    SBC #>VIC├OLOR╧FF
  407.    STA SYSWORK+1
  408.    RTS
  409.  
  410. VIC╙CROLL─EST   = SYSWORK+0
  411. VIC╙CROLL╙OURCE = SYSWORK+2
  412. VIC╙CROLL╥OWS   .BUF 1
  413. VIC╙CROLL┼XTRA  .BUF 1
  414.  
  415. VIC╫INSCROLL = *
  416.    STA SYSWORK+5
  417.    STY VIC├LS├OLOR
  418.    STX VIC╙CROLL┼XTRA
  419.    CPX #0
  420.    BNE +
  421. -  RTS
  422. +  LDA SYSWORK+5
  423.    AND #%1000
  424.    BEQ -
  425.    CPX VIC╫IN╥OWS
  426.    BCC +
  427.    LDX SYSWORK+4
  428.    LDA SYSWORK+5
  429.    LDY VIC├LS├OLOR
  430.    JSR VIC╫INCLS
  431.    RTS
  432. +  BIT SYSWORK+5
  433.    BPL +
  434.    JSR VIC╙CROLL╒P╙ETUP
  435.    JSR VIC╥OW╙CROLL╒P
  436.    LDA SYSWORK+4
  437.    JSR VIC─O╙CROLL┼XTRA
  438. +  BIT SYSWORK+5
  439.    BVC +
  440.    JSR VIC╙CROLL╒P╙ETUP
  441.    JSR VIC╙CROLL┴DD├OLOR
  442.    JSR VIC╥OW╙CROLL╒P
  443.    LDA VIC├LS├OLOR
  444.    JSR VIC─O╙CROLL┼XTRA
  445. +  RTS
  446.  
  447. VIC╙CROLL╒P╙ETUP = *
  448.    LDA VIC╙CROLL┼XTRA
  449.    LDX #0
  450.    JSR VIC╫INPOS
  451.    LDA SYSWORK+0
  452.    LDY SYSWORK+1
  453.    STA VIC╙CROLL╙OURCE+0
  454.    STY VIC╙CROLL╙OURCE+1
  455.    LDA VIC╫IN╙TART+0
  456.    LDY VIC╫IN╙TART+1
  457.    STA VIC╙CROLL─EST+0
  458.    STY VIC╙CROLL─EST+1
  459.    SEC
  460.    LDA VIC╫IN╥OWS
  461.    SBC VIC╙CROLL┼XTRA
  462.    STA VIC╙CROLL╥OWS
  463.    RTS
  464.  
  465. VIC╙CROLL┴DD├OLOR = *
  466.    CLC
  467.    LDA SYSWORK+1
  468.    ADC #>VIC├OLOR╧FF
  469.    STA SYSWORK+1
  470.    LDA SYSWORK+3
  471.    ADC #>VIC├OLOR╧FF
  472.    STA SYSWORK+3
  473.    RTS
  474.  
  475. VIC─O╙CROLL┼XTRA = *  ;( .┴=FILL┬YTE, (SW+0)=ADDR )
  476.    STA VIC╞ILL┬YTE
  477.    LDA VIC╙CROLL┼XTRA
  478.    STA VIC╞ILL╥OWS
  479.    LDA VIC╫IN├OLS
  480.    STA VIC╞ILL├OLS
  481.    JSR VIC╥OW╞ILL
  482.    RTS
  483.  
  484. VIC╥OW╙CROLL╒P = * ;( VIC╙CROLL╙OURCE++, VIC╙CROLL─EST++, VIC╙CROLL╥OWS-- )
  485.    LDA VIC╙CROLL╥OWS
  486.    BNE +
  487.    RTS
  488. +  NOP
  489. -  JSR VIC├OL╙CROLL
  490.    CLC
  491.    LDA VIC╙CROLL╙OURCE+0
  492.    ADC #VIC╥OW╔NC
  493.    STA VIC╙CROLL╙OURCE+0
  494.    BCC +
  495.    INC VIC╙CROLL╙OURCE+1
  496. +  CLC
  497.    LDA VIC╙CROLL─EST+0
  498.    ADC #VIC╥OW╔NC
  499.    STA VIC╙CROLL─EST+0
  500.    BCC +
  501.    INC VIC╙CROLL─EST+1
  502. +  DEC VIC╙CROLL╥OWS
  503.    BNE -
  504.    RTS
  505.  
  506. VIC├OL╙CROLL = * ;( VIC╙CROLL╙OURCE, VIC╙CROLL─EST, VIC╫IN├OLS )
  507.    LDY VIC╫IN├OLS
  508.    DEY
  509. -  LDA (VIC╙CROLL╙OURCE),Y
  510.    STA (VIC╙CROLL─EST),Y
  511.    DEY
  512.    BPL -
  513.    RTS
  514.  
  515. ;*** INTERRUPT SCREEN-SAVE STUFF
  516.  
  517. VIC╙S├OLOR  .BUF 1
  518. VIC╙S╥OWS   .BUF 1
  519. VIC╙S┴CTIVE .BYTE $00
  520.  
  521. VIC╙CREEN╙AVE = *
  522.    LDA VIC+$11
  523.    STA VIC╙S╥OWS
  524.    LDA VIC+$20
  525.    STA VIC╙S├OLOR
  526.    LDA #$FF
  527.    STA VIC╙S┴CTIVE
  528.    LDA #$00
  529.    STA VIC+$11
  530.    LDA #$00
  531.    STA VIC+$20
  532.    RTS
  533.  
  534. VIC╙CREEN╒NSAVE = *
  535.    LDA VIC╙S╥OWS
  536.    AND #%01111111
  537.    STA VIC+$11
  538.    LDA VIC╙S├OLOR
  539.    STA VIC+$20
  540.    LDA #$00
  541.    STA VIC╙S┴CTIVE
  542.    RTS
  543.  
  544. ;THE END + BLANK LINE
  545.  
  546.