home *** CD-ROM | disk | FTP | other *** search
- ;┴├┼-128/64 KERNEL ╓╔├ 40-COLUMN SCREEN DRIVER CODE
-
- VIC├HAR┴DDR = $0400
- VIC├OLOR╧FF = $D400
- VIC╥OW╔NC = 40
- VIC = $D000
-
- VIC╫IN╙CR╪ .BUF 1
- VIC╫IN╙CR┘ .BUF 1
- VIC╫IN╥OWS .BUF 1
- VIC╫IN├OLS .BUF 1
- VIC╫IN╙TART .BUF 2
- VIC╫IN╙AVE╙Z .BUF 2
-
- VIC╔NIT = *
- LDA VIC+$11
- AND #%00011111
- STA VIC+$11
- LDA #$18
- STA VIC+$18
- LDA $DD00
- AND #%11111100
- ORA #%00000011
- STA $DD00
- ;** WINDOW PARAMETERS
- JSR VIC╫INMAX
- RTS
-
- VIC╙HUTDOWN = *
- RTS
-
- VIC╫INMAX = *
- LDA #0
- STA VIC╫IN╙CR╪
- STA VIC╫IN╙CR┘
- LDA #<VIC├HAR┴DDR
- LDY #>VIC├HAR┴DDR
- STA VIC╫IN╙TART+0
- STY VIC╫IN╙TART+1
- LDA #25
- LDX #40
- STA VIC╫IN╥OWS
- STX VIC╫IN├OLS
- LDA #<1000+1000+16
- LDY #>1000+1000+16
- STA VIC╫IN╙AVE╙Z+0
- STY VIC╫IN╙AVE╙Z+1
- JSR CON╫IN├HANGE├ALLBACK
- CLC
- RTS
-
- RGBI2VIC╘AB .BYTE 0,11,6,14,5,13,12,3,2,10,8,4,9,7,15,1
-
- RGBI2VIC = *
- AND #$0F
- TAX
- LDA RGBI2VIC╘AB,X
- RTS
-
- VIC2RGBI╘AB .BYTE 0,15,8,7,11,4,2,13,10,12,9,1,6,5,3,14
-
- VIC2RGBI = *
- AND #$0F
- TAX
- LDA VIC2RGBI╘AB,X
- RTS
-
- VIC├LS├OLOR .BUF 1
-
- VIC╫INCLS = *
- STX VIC╞ILL┬YTE
- STY VIC├LS├OLOR
- STA SYSWORK+2
- BIT SYSWORK+2
- BPL +
- JSR VIC╫INCLS╙ETUP
- JSR VIC╥OW╞ILL
- + BIT SYSWORK+2
- BVC +
- JSR VIC╫INCLS╙ETUP
- LDA VIC├LS├OLOR
- JSR RGBI2VIC
- STA VIC╞ILL┬YTE
- JSR VIC┴DD├OLOR
- JSR VIC╥OW╞ILL
- + RTS
-
- VIC╫INCLS╙ETUP = *
- LDA VIC╫IN╙TART+0
- LDY VIC╫IN╙TART+1
- STA SYSWORK+0
- STY SYSWORK+1
- LDA VIC╫IN╥OWS
- STA VIC╞ILL╥OWS
- RTS
-
- VIC┴DD├OLOR = *
- CLC
- LDA SYSWORK+1
- ADC #>VIC├OLOR╧FF
- STA SYSWORK+1
- RTS
-
- VIC╞ILL┬YTE .BUF 1
- VIC╞ILL╥OWS .BUF 1
- VIC╞ILL├OLS .BUF 1
-
- VIC╥OW╞ILL = * ;( (SW+0)=ADDR++, VIC╞ILL┬YTE, VIC╞ILL╥OWS-- )
- LDA VIC╫IN├OLS
- STA VIC╞ILL├OLS
- LDA VIC╞ILL╥OWS
- BNE +
- RTS
- / JSR VIC├OL╞ILL
- CLC
- LDA SYSWORK+0
- ADC #VIC╥OW╔NC
- STA SYSWORK+0
- BCC +
- INC SYSWORK+1
- + DEC VIC╞ILL╥OWS
- BNE -
- RTS
-
- VIC├OL╞ILL = * ;( (SW+0)=ADDR, VIC╞ILL┬YTE, VIC╞ILL├OLS )
- LDY VIC╞ILL├OLS
- BEQ +
- DEY
- LDA VIC╞ILL┬YTE
- - STA (SYSWORK),Y
- DEY
- BPL -
- + RTS
-
- VIC╫INSET╥OWS .BUF 1
- VIC╫INSET├OLS .BUF 1
-
- VIC╫INSET = * ;%%%
- STA VIC╫INSET╥OWS
- CMP #0
- BEQ VIC╫INSET┼RR
- STX VIC╫INSET├OLS
- CPX #0
- BEQ VIC╫INSET┼RR
- CLC
- ADC SYSWORK+0
- CMP #25
- BEQ +
- BCC +
-
- VIC╫INSET┼RR = *
- LDA #ACE┼RR╔NVALID╫INDOW╨ARMS
- STA ERRNO
- SEC
- RTS
-
- + CLC
- LDA VIC╫INSET├OLS
- ADC SYSWORK+1
- CMP #40
- BEQ +
- BCS VIC╫INSET┼RR
- + LDA SYSWORK+0
- LDX SYSWORK+1
- STA VIC╫IN╙CR╪
- STX VIC╫IN╙CR┘
- JSR VIC═ULT40
- LDA SYSWORK+0
- STA VIC╫IN╙TART+0
- CLC
- LDA SYSWORK+1
- ADC #>VIC├HAR┴DDR
- STA VIC╫IN╙TART+1
- LDA VIC╫INSET╥OWS
- LDX VIC╫INSET├OLS
- STA VIC╫IN╥OWS
- STX VIC╫IN├OLS
- ;XX VIC╫IN╙AVE╙Z
- JSR CON╫IN├HANGE├ALLBACK
- LDA VIC╫IN╙CR╪
- LDX VIC╫IN╙CR┘
- STA SYSWORK+0
- STX SYSWORK+1
- CLC
- RTS
-
- VIC╫INSIZE = *
- LDA VIC╫IN╙TART+0
- LDY VIC╫IN╙TART+1
- STA SYSWORK+2
- STY SYSWORK+3
- LDA #<VIC╥OW╔NC
- LDY #>VIC╥OW╔NC
- STA SYSWORK+4
- STY SYSWORK+5
- LDA VIC╫IN╙CR┘
- LDX VIC╫IN╙CR╪
- STA SYSWORK+0
- STX SYSWORK+1
- LDA VIC╫IN╥OWS
- LDX VIC╫IN├OLS
- CLC
- RTS
-
- VIC╨UT╫HICH .BUF 1
- VIC╨UT╠EN .BUF 1
-
- VIC╫INPUT = *
- STA VIC╨UT╫HICH
- STY VIC╞ILL┬YTE
- STX VIC╨UT╠EN
- BIT VIC╨UT╫HICH
- BPL VIC╫INPUT├OLOR
- LDY #0
- CPY VIC╨UT╠EN
- BEQ +
- - LDA (SYSWORK+2),Y
- STA (SYSWORK+0),Y
- INY
- CPY VIC╨UT╠EN
- BCC -
- + CPY SYSWORK+5
- BEQ VIC╫INPUT├OLOR
- LDA SYSWORK+4
- - STA (SYSWORK+0),Y
- INY
- CPY SYSWORK+5
- BCC -
-
- VIC╫INPUT├OLOR = *
- BIT VIC╨UT╫HICH
- BVS +
- RTS
- + CLC
- LDA SYSWORK+1
- ADC #>VIC├OLOR╧FF
- STA SYSWORK+1
- LDA VIC╞ILL┬YTE
- JSR RGBI2VIC
- LDY SYSWORK+5
- DEY
- BMI +
- - STA (SYSWORK),Y
- DEY
- BPL -
- + SEC
- LDA SYSWORK+1
- SBC #>VIC├OLOR╧FF
- STA SYSWORK+1
- RTS
-
- VIC╫INCOLOR = *
- PHP
- SEI
- CMP #128
- BCC +
- PHA
- TXA
- JSR RGBI2VIC
- STA VIC+$21
- PLA
- + AND #64
- BEQ VIC╫INCOLOR┼XIT
- TYA
- JSR RGBI2VIC
- BIT VIC╙S┴CTIVE
- BMI +
- STA VIC+$20
- JMP VIC╫INCOLOR┼XIT
- + STA VIC╙S├OLOR
-
- VIC╫INCOLOR┼XIT = *
- BIT VIC╙S┴CTIVE
- BMI +
- LDA VIC+$20
- JMP ++
- + LDA VIC╙S├OLOR
- + JSR VIC2RGBI
- TAY
- LDA VIC+$21
- JSR VIC2RGBI
- TAX
- PLP
- RTS
-
- VIC╫INPOS = *
- JSR VIC═ULT40
- CLC
- LDA SYSWORK+0
- ADC VIC╫IN╙TART+0
- STA SYSWORK+0
- LDA SYSWORK+1
- ADC VIC╫IN╙TART+1
- STA SYSWORK+1
- RTS
-
- VIC═ULT40 = * ;( .┴=ROW:0-24, .╪=COL ) : (SW+0)=ROW*40+COL, .╪:UNCH
- STA SYSWORK+0
- LDY #0
- STY SYSWORK+1
- ASL
- ASL
- ADC SYSWORK+0
- ASL
- ROL SYSWORK+1
- ASL
- ROL SYSWORK+1
- ASL
- ROL SYSWORK+1
- STX SYSWORK+0
- CLC
- ADC SYSWORK+0
- BCC +
- INC SYSWORK+1
- + STA SYSWORK+0
- RTS
-
- VIC├URSOR├HAR .BUF 1
- VIC├URSOR├OLOR .BUF 1
- VIC├URSOR╞LASH .BYTE $00 ;$00=INACTIVE, $FF=ACTIVE
- VIC├URSOR├OUNTDOWN .BUF 1
- VIC├URSOR┴DDR .BUF 2
-
- VIC╫INCURSOR = *
- CMP #0
- BEQ VIC├URSOR╧FF
- TYA
- JSR RGBI2VIC
- STA VIC├URSOR├OLOR
- LDA SYSWORK+0
- LDY SYSWORK+1
- STA VIC├URSOR┴DDR+0
- STY VIC├URSOR┴DDR+1
- LDY #0
- LDA (SYSWORK+0),Y
- STA VIC├URSOR├HAR
- JSR VIC╙ET├OLOR┴DDR
- LDY #0
- LDA (SYSWORK+0),Y
- TAX
- LDA VIC├URSOR├OLOR
- STA (SYSWORK+0),Y
- STX VIC├URSOR├OLOR
- JSR VIC╒NSET├OLOR┴DDR
- LDA #1
- STA VIC├URSOR├OUNTDOWN
- JSR VIC╔RQ├URSOR┼NTER
- LDA #$FF
- STA VIC├URSOR╞LASH
- RTS
-
- VIC├URSOR╧FF = *
- LDA #$00
- STA VIC├URSOR╞LASH
- LDY #0
- LDA VIC├URSOR├HAR
- STA (SYSWORK+0),Y
- JSR VIC╙ET├OLOR┴DDR
- LDA VIC├URSOR├OLOR
- STA (SYSWORK+0),Y
- JSR VIC╒NSET├OLOR┴DDR
- RTS
-
- VIC╔RQ╫ORK = $A0
-
- VIC╔RQ├URSOR = *
- BIT VIC├URSOR╞LASH
- BMI VIC╔RQ├URSOR┼NTER
- - RTS
- VIC╔RQ├URSOR┼NTER = *
- DEC VIC├URSOR├OUNTDOWN
- BNE -
- LDA #20
- STA VIC├URSOR├OUNTDOWN
- LDA VIC├URSOR┴DDR+0
- LDY VIC├URSOR┴DDR+1
- STA VIC╔RQ╫ORK+0
- STY VIC╔RQ╫ORK+1
- LDY #0
- LDA (VIC╔RQ╫ORK),Y
- PHA
- SEC
- SBC #32
- AND #%01000000
- BNE +
- PLA
- SEC
- SBC #64
- JMP ++
- + PLA
- CLC
- ADC #64
- + STA (VIC╔RQ╫ORK),Y
- RTS
-
- VIC╙ET├OLOR┴DDR = * ;( (SW+0)=ADDR ) : (SW+0)=COLOR┴DDR
- CLC
- LDA SYSWORK+1
- ADC #>VIC├OLOR╧FF
- STA SYSWORK+1
- RTS
-
- VIC╒NSET├OLOR┴DDR = * ;( (SW+0)=COLOR┴DDR ) : (SW+0)=ADDR
- SEC
- LDA SYSWORK+1
- SBC #>VIC├OLOR╧FF
- STA SYSWORK+1
- RTS
-
- VIC╙CROLL─EST = SYSWORK+0
- VIC╙CROLL╙OURCE = SYSWORK+2
- VIC╙CROLL╥OWS .BUF 1
- VIC╙CROLL┼XTRA .BUF 1
-
- VIC╫INSCROLL = *
- STA SYSWORK+5
- STY VIC├LS├OLOR
- STX VIC╙CROLL┼XTRA
- CPX #0
- BNE +
- - RTS
- + LDA SYSWORK+5
- AND #%1000
- BEQ -
- CPX VIC╫IN╥OWS
- BCC +
- LDX SYSWORK+4
- LDA SYSWORK+5
- LDY VIC├LS├OLOR
- JSR VIC╫INCLS
- RTS
- + BIT SYSWORK+5
- BPL +
- JSR VIC╙CROLL╒P╙ETUP
- JSR VIC╥OW╙CROLL╒P
- LDA SYSWORK+4
- JSR VIC─O╙CROLL┼XTRA
- + BIT SYSWORK+5
- BVC +
- JSR VIC╙CROLL╒P╙ETUP
- JSR VIC╙CROLL┴DD├OLOR
- JSR VIC╥OW╙CROLL╒P
- LDA VIC├LS├OLOR
- JSR VIC─O╙CROLL┼XTRA
- + RTS
-
- VIC╙CROLL╒P╙ETUP = *
- LDA VIC╙CROLL┼XTRA
- LDX #0
- JSR VIC╫INPOS
- LDA SYSWORK+0
- LDY SYSWORK+1
- STA VIC╙CROLL╙OURCE+0
- STY VIC╙CROLL╙OURCE+1
- LDA VIC╫IN╙TART+0
- LDY VIC╫IN╙TART+1
- STA VIC╙CROLL─EST+0
- STY VIC╙CROLL─EST+1
- SEC
- LDA VIC╫IN╥OWS
- SBC VIC╙CROLL┼XTRA
- STA VIC╙CROLL╥OWS
- RTS
-
- VIC╙CROLL┴DD├OLOR = *
- CLC
- LDA SYSWORK+1
- ADC #>VIC├OLOR╧FF
- STA SYSWORK+1
- LDA SYSWORK+3
- ADC #>VIC├OLOR╧FF
- STA SYSWORK+3
- RTS
-
- VIC─O╙CROLL┼XTRA = * ;( .┴=FILL┬YTE, (SW+0)=ADDR )
- STA VIC╞ILL┬YTE
- LDA VIC╙CROLL┼XTRA
- STA VIC╞ILL╥OWS
- LDA VIC╫IN├OLS
- STA VIC╞ILL├OLS
- JSR VIC╥OW╞ILL
- RTS
-
- VIC╥OW╙CROLL╒P = * ;( VIC╙CROLL╙OURCE++, VIC╙CROLL─EST++, VIC╙CROLL╥OWS-- )
- LDA VIC╙CROLL╥OWS
- BNE +
- RTS
- + NOP
- - JSR VIC├OL╙CROLL
- CLC
- LDA VIC╙CROLL╙OURCE+0
- ADC #VIC╥OW╔NC
- STA VIC╙CROLL╙OURCE+0
- BCC +
- INC VIC╙CROLL╙OURCE+1
- + CLC
- LDA VIC╙CROLL─EST+0
- ADC #VIC╥OW╔NC
- STA VIC╙CROLL─EST+0
- BCC +
- INC VIC╙CROLL─EST+1
- + DEC VIC╙CROLL╥OWS
- BNE -
- RTS
-
- VIC├OL╙CROLL = * ;( VIC╙CROLL╙OURCE, VIC╙CROLL─EST, VIC╫IN├OLS )
- LDY VIC╫IN├OLS
- DEY
- - LDA (VIC╙CROLL╙OURCE),Y
- STA (VIC╙CROLL─EST),Y
- DEY
- BPL -
- RTS
-
- ;*** INTERRUPT SCREEN-SAVE STUFF
-
- VIC╙S├OLOR .BUF 1
- VIC╙S╥OWS .BUF 1
- VIC╙S┴CTIVE .BYTE $00
-
- VIC╙CREEN╙AVE = *
- LDA VIC+$11
- STA VIC╙S╥OWS
- LDA VIC+$20
- STA VIC╙S├OLOR
- LDA #$FF
- STA VIC╙S┴CTIVE
- LDA #$00
- STA VIC+$11
- LDA #$00
- STA VIC+$20
- RTS
-
- VIC╙CREEN╒NSAVE = *
- LDA VIC╙S╥OWS
- AND #%01111111
- STA VIC+$11
- LDA VIC╙S├OLOR
- STA VIC+$20
- LDA #$00
- STA VIC╙S┴CTIVE
- RTS
-
- ;THE END + BLANK LINE
-
-