mirror of
https://github.com/option8/rollingdemo.git
synced 2024-12-28 08:30:38 +00:00
added FASTSCAN
This commit is contained in:
parent
2565f6b661
commit
9063f45fae
BIN
FASTSCAN.dsk
Normal file
BIN
FASTSCAN.dsk
Normal file
Binary file not shown.
209
fastscan.s
Normal file
209
fastscan.s
Normal file
@ -0,0 +1,209 @@
|
|||||||
|
DSK FASTSCAN
|
||||||
|
|
||||||
|
**************************************************
|
||||||
|
* To Do:
|
||||||
|
*
|
||||||
|
**************************************************
|
||||||
|
* Variables
|
||||||
|
**************************************************
|
||||||
|
|
||||||
|
CHAR EQU $FC ; char/pixel to plot
|
||||||
|
DELAY EQU $03
|
||||||
|
DIRECTION EQU $02
|
||||||
|
|
||||||
|
**************************************************
|
||||||
|
* Apple Standard Memory Locations
|
||||||
|
**************************************************
|
||||||
|
CLRLORES EQU $F832
|
||||||
|
LORES EQU $C050
|
||||||
|
TXTSET EQU $C051
|
||||||
|
MIXCLR EQU $C052
|
||||||
|
MIXSET EQU $C053
|
||||||
|
TXTPAGE1 EQU $C054
|
||||||
|
TXTPAGE2 EQU $C055
|
||||||
|
KEY EQU $C000
|
||||||
|
C80STOREOFF EQU $C000
|
||||||
|
C80STOREON EQU $C001
|
||||||
|
STROBE EQU $C010
|
||||||
|
SPEAKER EQU $C030
|
||||||
|
VBL EQU $C02E
|
||||||
|
RDVBLBAR EQU $C019 ;not VBL (VBL signal low
|
||||||
|
WAIT EQU $FCA8
|
||||||
|
RAMWRTAUX EQU $C005
|
||||||
|
RAMWRTMAIN EQU $C004
|
||||||
|
SETAN3 EQU $C05E ;Set annunciator-3 output to 0
|
||||||
|
SET80VID EQU $C00D ;enable 80-column display mode (WR-only)
|
||||||
|
HOME EQU $FC58 ; clear the text screen
|
||||||
|
CH EQU $24 ; cursor Horiz
|
||||||
|
CV EQU $25 ; cursor Vert
|
||||||
|
VTAB EQU $FC22 ; Sets the cursor vertical position (from CV)
|
||||||
|
COUT EQU $FDED ; Calls the output routine whose address is stored in CSW,
|
||||||
|
; normally COUTI
|
||||||
|
STROUT EQU $DB3A ;Y=String ptr high, A=String ptr low
|
||||||
|
|
||||||
|
ALTTEXT EQU $C055
|
||||||
|
ALTTEXTOFF EQU $C054
|
||||||
|
|
||||||
|
ROMINIT EQU $FB2F
|
||||||
|
ROMSETKBD EQU $FE89
|
||||||
|
ROMSETVID EQU $FE93
|
||||||
|
|
||||||
|
ALTCHAR EQU $C00F ; enables alternative character set - mousetext
|
||||||
|
|
||||||
|
BLINK EQU $F3
|
||||||
|
SPEED EQU $F1
|
||||||
|
|
||||||
|
|
||||||
|
**************************************************
|
||||||
|
* START - sets up various fiddly zero page bits
|
||||||
|
**************************************************
|
||||||
|
ORG $2000 ; PROGRAM DATA STARTS AT $2000
|
||||||
|
|
||||||
|
|
||||||
|
DRAWBOARD JSR HOME
|
||||||
|
JSR MESSAGE ; 8677 cycles.
|
||||||
|
LDA #$11
|
||||||
|
STA CHAR
|
||||||
|
STA DIRECTION
|
||||||
|
STA DELAY
|
||||||
|
LDA #$01
|
||||||
|
STA SPEED
|
||||||
|
JSR FILLSCREENFAST ; 6023 cycles.
|
||||||
|
|
||||||
|
* read the VBL
|
||||||
|
READVBL BIT RDVBLBAR ; 4
|
||||||
|
* if bit7 = 0, then VBL active
|
||||||
|
BMI READVBL ; 2 wait until refresh interval
|
||||||
|
|
||||||
|
* set TEXT during VBL
|
||||||
|
|
||||||
|
STA TXTSET ; 4
|
||||||
|
STA TXTPAGE1
|
||||||
|
|
||||||
|
* read the VBL again
|
||||||
|
READVBL2 BIT RDVBLBAR ; 4
|
||||||
|
* if bit7 = 1, then VBL active
|
||||||
|
BPL READVBL2 ; 2 loop while VBL is happening
|
||||||
|
|
||||||
|
* VBL is over
|
||||||
|
* do something while the screen draws a bit
|
||||||
|
* Screen draws in 12480 instructions
|
||||||
|
|
||||||
|
LDA DIRECTION ; incrementing or decrementing?
|
||||||
|
ROR ; bit 0 into Carry
|
||||||
|
BCC INCREMENT ; even = increment, odd = decrement
|
||||||
|
|
||||||
|
DECREMENT DEC DELAY ; scan line going up
|
||||||
|
|
||||||
|
STA TXTPAGE1 ; show page 1 ( message )
|
||||||
|
|
||||||
|
JMP XLOOP ; wait
|
||||||
|
|
||||||
|
INCREMENT INC DELAY ; scan line going down
|
||||||
|
|
||||||
|
XLOOP LDX DELAY
|
||||||
|
BEQ NOLOOP
|
||||||
|
CPX #$FF
|
||||||
|
BEQ NOLOOP
|
||||||
|
XLOOP2 NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
NOP ; 2
|
||||||
|
DEX ; 2
|
||||||
|
BNE XLOOP2 ; 2
|
||||||
|
|
||||||
|
* set GR at bottom of screen
|
||||||
|
NOLOOP STA LORES ; 4
|
||||||
|
STA TXTPAGE2
|
||||||
|
|
||||||
|
LDA DELAY
|
||||||
|
CMP #$C0
|
||||||
|
BCS GOFILL ; == C0 change directions
|
||||||
|
|
||||||
|
* loop until the next blank
|
||||||
|
GOLOOP JMP READVBL
|
||||||
|
|
||||||
|
|
||||||
|
GOFILL INC DIRECTION ; equal or greater than c0, change colors
|
||||||
|
LDA CHAR
|
||||||
|
CLC
|
||||||
|
ADC #$11
|
||||||
|
STA CHAR
|
||||||
|
JSR FILLSCREENFAST ; change colors when loop length is >C0
|
||||||
|
JMP READVBL
|
||||||
|
|
||||||
|
**************************************************
|
||||||
|
* writes message
|
||||||
|
**************************************************
|
||||||
|
HELLOWORLD ASC "Check out what I learned at Kansasfest!",00 ; set to ascii for message
|
||||||
|
|
||||||
|
|
||||||
|
MESSAGE
|
||||||
|
LDA #$0B
|
||||||
|
STA CV ; jump down
|
||||||
|
JSR VTAB
|
||||||
|
LDA #$00
|
||||||
|
STA CH
|
||||||
|
LDY #>HELLOWORLD
|
||||||
|
LDA #<HELLOWORLD
|
||||||
|
JSR STROUT ;Y=String ptr high, A=String ptr low
|
||||||
|
|
||||||
|
RTS
|
||||||
|
;/MESSAGE
|
||||||
|
|
||||||
|
**************************************************
|
||||||
|
* blanks the screen quickly.
|
||||||
|
* https://www.atarimagazines.com/compute/issue10/032_1_THE_APPLE_GAZETTE.php
|
||||||
|
**************************************************
|
||||||
|
; FOR EACH ROW/COLUMN
|
||||||
|
|
||||||
|
FILLSCREENFAST ; 6023 instructions
|
||||||
|
|
||||||
|
FLASH LDA CHAR ; Get selected color byte
|
||||||
|
LDY #$78 ; Prepare to fill 120 bytes
|
||||||
|
JSR FILL1 ; Fill four sets of 120 bytes each
|
||||||
|
LDY #$78 ; Prepare to fill 80 bytes
|
||||||
|
JSR FILL2 ; Fill four sets of 80 bytes each
|
||||||
|
RTS ; Done. Return.
|
||||||
|
FILL1 DEY
|
||||||
|
STA $800, Y
|
||||||
|
STA $880, Y
|
||||||
|
STA $900, Y
|
||||||
|
STA $980, Y
|
||||||
|
BNE FILL1
|
||||||
|
RTS
|
||||||
|
FILL2 DEY
|
||||||
|
STA $a00, Y
|
||||||
|
STA $a80, Y
|
||||||
|
STA $b00, Y
|
||||||
|
STA $b80, Y
|
||||||
|
BNE FILL2
|
||||||
|
RTS
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user