mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-27 02:31:00 +00:00
fire: working on actual hardware
This commit is contained in:
parent
c1dd559235
commit
1d0daf7dcd
@ -1,2 +1,2 @@
|
|||||||
70: 2C 50 C0 20 70 FC A9 FF 91 2A 88 10 FB A9 16 85 25 20 22 FC A0 27 A5 4E F0 05 0A F0 04 90 02 49 1D 85 4E 30 09 B1 28 29 07 AA B5 A7 91 28 88 10 E5 C6 25 10 DC 30 CC 00 BB 00 AA 00 99 00 DD
|
70: 2C 50 C0 2C 52 C0 20 70 FC A9 FF 91 2A 88 10 FB A9 16 85 25 20 22 FC A0 27 68 F0 05 0A F0 04 90 02 49 1D 48 30 09 B1 28 29 07 AA B5 A8 91 28 88 10 E7 C6 25 10 DE 30 CE 00 BB 00 AA 00 99 00 DD
|
||||||
70G
|
70G
|
||||||
|
BIN
fire/fire.dsk
BIN
fire/fire.dsk
Binary file not shown.
@ -11,6 +11,15 @@
|
|||||||
; 64 bytes -- use the firmware SCROLL routine to handle the scrolling
|
; 64 bytes -- use the firmware SCROLL routine to handle the scrolling
|
||||||
; this adds some flicker but saves many bytes
|
; this adds some flicker but saves many bytes
|
||||||
; 63 bytes -- qkumba noted that SCROLL leaves BAS2L:BAS2H pointing at $7d0
|
; 63 bytes -- qkumba noted that SCROLL leaves BAS2L:BAS2H pointing at $7d0
|
||||||
|
; 66 bytes -- tried on real hardware. Found that the original firmware
|
||||||
|
; never sets MIXCLR on boot, and my II+ machine was leaving
|
||||||
|
; it off so for correctness need to add it on.
|
||||||
|
; 66 bytes -- wasted a lot of time trying to either find clever ways to
|
||||||
|
; get $C050/C052 accessed, or to shorten the lookup table
|
||||||
|
; in half by lsr. Nothing panned out.
|
||||||
|
; 64 bytes -- realized I could save/restore the random SEEDL on the stack!
|
||||||
|
; doesn't seem to affect the output pattern either.
|
||||||
|
|
||||||
|
|
||||||
; Zero Page
|
; Zero Page
|
||||||
|
|
||||||
@ -25,7 +34,7 @@ SEEDL = $4E
|
|||||||
|
|
||||||
; Soft Switches
|
; Soft Switches
|
||||||
SET_GR = $C050 ; Enable graphics
|
SET_GR = $C050 ; Enable graphics
|
||||||
FULLGR = $C052 ; Full screen, no text
|
MIXCLR = $C052 ; Full screen, no text at bottom
|
||||||
LORES = $C056 ; Enable LORES graphics
|
LORES = $C056 ; Enable LORES graphics
|
||||||
|
|
||||||
; Monitor ROM routines. Try to use well-known entry points as
|
; Monitor ROM routines. Try to use well-known entry points as
|
||||||
@ -39,10 +48,14 @@ fire_demo:
|
|||||||
; Set lores graphics
|
; Set lores graphics
|
||||||
|
|
||||||
bit SET_GR ; force graphics mode ; 3
|
bit SET_GR ; force graphics mode ; 3
|
||||||
; happily at bootup FULLGR and LORES
|
; LORES and LOWSCR (lo-res page1)
|
||||||
; seem to already be in the right positions
|
; are set by the boot rom
|
||||||
; so we get LORES 40x48 mode
|
|
||||||
|
|
||||||
|
bit MIXCLR ; want full-screen graphics w/o mixed ; 3
|
||||||
|
; text the boot process doesn't set this
|
||||||
|
; (it doesn't matter in text mode)
|
||||||
|
; and while IIe and emulators come up clear
|
||||||
|
; my Apple II+ doesn't
|
||||||
|
|
||||||
; Set window. This seems to be set properly at boot though
|
; Set window. This seems to be set properly at boot though
|
||||||
; lda #0
|
; lda #0
|
||||||
@ -95,13 +108,15 @@ xloop:
|
|||||||
; http://codebase64.org/doku.php?id=base:small_fast_8-bit_prng
|
; http://codebase64.org/doku.php?id=base:small_fast_8-bit_prng
|
||||||
|
|
||||||
random8:
|
random8:
|
||||||
lda SEEDL ; 2
|
pla
|
||||||
|
; lda SEEDL ; 2
|
||||||
beq doEor ; 2
|
beq doEor ; 2
|
||||||
asl ; 1
|
asl ; 1
|
||||||
beq noEor ; if the input was $80, skip the EOR ; 2
|
beq noEor ; if the input was $80, skip the EOR ; 2
|
||||||
bcc noEor ; 2
|
bcc noEor ; 2
|
||||||
doEor: eor #$1d ; 2
|
doEor: eor #$1d ; 2
|
||||||
noEor: sta SEEDL ; 2
|
noEor: ;sta SEEDL ; 2
|
||||||
|
pha
|
||||||
|
|
||||||
; end inlined RNG
|
; end inlined RNG
|
||||||
|
|
||||||
@ -125,14 +140,13 @@ no_change:
|
|||||||
|
|
||||||
bmi scroll_loop ; 2
|
bmi scroll_loop ; 2
|
||||||
|
|
||||||
|
|
||||||
color_progression:
|
color_progression:
|
||||||
.byte $00 ; 8->0 ; 1000 0000
|
.byte $00 ; 8->0 ; 1000 -> 0000 ; needed
|
||||||
.byte $bb ; 9->11 ; 1001 1011
|
.byte $bb ; 9->11 ; 1001 -> 1011
|
||||||
.byte $00 ; 10->0 ; 1010 0000
|
.byte $00 ; 10->0 ; 1010 -> 0000 ; needed
|
||||||
.byte $aa ; 11->10 ; 1011 1010
|
.byte $aa ; 11->10 ; 1011 -> 1010
|
||||||
.byte $00 ; 12->0 ; 1100 0000
|
.byte $00 ; 12->0 ; 1100 -> 0000 ; don't care
|
||||||
.byte $99 ; 13->9 ; 1101 1001
|
.byte $99 ; 13->9 ; 1101 -> 1001
|
||||||
.byte $00 ; 14->0 ; 1110 0000
|
.byte $00 ; 14->0 ; 1110 -> 0000 ; don't care
|
||||||
.byte $dd ; 15->13 ; 1111 1101
|
.byte $dd ; 15->13 ; 1111 -> 1101
|
||||||
|
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
5 HOME
|
5 HOME
|
||||||
10 PRINT "FIRE DEMO V1.3 BY DEATER"
|
7 X=PEEK(49235): REM FORCE II+ BEHAVIOR FOR TESTING
|
||||||
|
10 PRINT "FIRE DEMO V1.4 BY DEATER"
|
||||||
20 PRINT:PRINT
|
20 PRINT:PRINT
|
||||||
30 PRINT "WHICH DEMO DO YOU WISH TO RUN?"
|
30 PRINT "WHICH DEMO DO YOU WISH TO RUN?"
|
||||||
40 PRINT "1. FIRE_EXTREME (63 BYTES)"
|
40 PRINT "1. FIRE_EXTREME (64 BYTES)"
|
||||||
50 PRINT "2. FIRE_FIRMWARE (80 BYTES)"
|
50 PRINT "2. FIRE_FIRMWARE (80 BYTES)"
|
||||||
60 PRINT "3. FIRE_TINY (105 BYTES)"
|
60 PRINT "3. FIRE_TINY (105 BYTES)"
|
||||||
70 PRINT "4. RANDOM COOL EFFECT"
|
70 PRINT "4. RANDOM COOL EFFECT"
|
||||||
|
Loading…
Reference in New Issue
Block a user