Created
July 12, 2021 09:04
-
-
Save fesh0r/6f49ffd08e67885acbf63c343ea61799 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
\ Doom Fire! | |
OSRDCH = &FFE0 | |
OSWRCH = &FFEE | |
OSWORD = &FFF1 | |
OSBYTE = &FFF4 | |
OSCLI = &FFF7 | |
CRTC_REG = &FE00 | |
CRTC_VAL = &FE01 | |
VIDPROC_CTL = &FE20 | |
VIDPROC_PAL = &FE21 | |
SVIA = &FE40 | |
SVIA_IFR = SVIA+13 | |
SVIA_IER = SVIA+14 | |
UVIA = &FE60 | |
UVIA_IFR = UVIA+13 | |
UVIA_IER = UVIA+14 | |
setMode = &CB33 | |
coloursMode2 = &C42A | |
IRQ1V = &204 | |
os_VIDPROC_CTL = &248 | |
vsyncCtr = &240 | |
intA = &FC | |
coloursL = &50 | |
coloursR = &60 | |
buffPtr = &70 | |
buffCnt = &72 | |
rand = &74 | |
dispX = &76 | |
width = 40 | |
height = 32 | |
buffer = &3000 | |
buffer_len = width*height | |
display = &7C00+&180-4 | |
seed = &BEEB | |
ORG &1C07 | |
.start | |
\ EQUB &0D,&00,&0A,&F9,&D6,&90,&3A | |
LDA #2 | |
JSR setMode | |
LDA #&E0 | |
STA os_VIDPROC_CTL | |
LDY #12 | |
.crtc_loop | |
LDA crtc_config,Y | |
STY CRTC_REG | |
STA CRTC_VAL | |
LDX coloursSrc,Y | |
LDA coloursMode2,X | |
AND #&AA | |
STA coloursL,Y | |
LSR A | |
STA coloursR,Y | |
DEY | |
BPL crtc_loop | |
LDX #width-1 | |
LDA #12 | |
.init_loop | |
STA buffer+buffer_len,X | |
DEX | |
BPL init_loop | |
LDA #LO(seed) | |
STA rand | |
LDA #HI(seed) | |
STA rand+1 | |
LDA #LO(buffer-1) | |
STA buffPtr | |
LDA #LO(buffer_len) | |
STA buffCnt | |
.main_loop | |
LDA #HI(buffer-1) | |
STA buffPtr+1 | |
LDA #HI(buffer_len) | |
STA buffCnt+1 | |
.calc_loop | |
LSR rand+1 | |
ROR rand | |
BCC skip_eor | |
LDA rand+1 | |
EOR #&B4 | |
STA rand+1 | |
.skip_eor | |
LDY #width+1 | |
LDA (buffPtr),Y | |
BEQ already_zero | |
SBC #0 | |
.already_zero | |
LDY #1 | |
BIT rand | |
BPL do_store | |
DEY | |
BVS do_store | |
INY | |
INY | |
.do_store | |
STA (buffPtr),Y | |
INC buffPtr | |
BNE skip_buff | |
INC buffPtr+1 | |
.skip_buff | |
DEC buffCnt | |
BNE calc_loop | |
DEC buffCnt+1 | |
BNE calc_loop | |
LDA vsyncCtr | |
.vsync_loop | |
CMP vsyncCtr | |
BEQ vsync_loop | |
LDY #0 | |
STY dispX | |
.disp_loop | |
LDX buffer+&0000,Y | |
LDA coloursL,X | |
LDX buffer+&0001,Y | |
ORA coloursR,X | |
LDX dispX | |
STA display+&0000,X | |
LDX buffer+&0100,Y | |
LDA coloursL,X | |
LDX buffer+&0101,Y | |
ORA coloursR,X | |
LDX dispX | |
STA display+&0080,X | |
LDX buffer+&0200,Y | |
LDA coloursL,X | |
LDX buffer+&0201,Y | |
ORA coloursR,X | |
LDX dispX | |
STA display+&0100,X | |
LDX buffer+&0300,Y | |
LDA coloursL,X | |
LDX buffer+&0301,Y | |
ORA coloursR,X | |
LDX dispX | |
STA display+&0180,X | |
LDX buffer+&0400,Y | |
LDA coloursL,X | |
LDX buffer+&0401,Y | |
ORA coloursR,X | |
LDX dispX | |
STA display+&0200,X | |
INC dispX | |
INY | |
INY | |
BNE disp_loop | |
JMP main_loop | |
.coloursSrc | |
EQUB 0 \ black | |
EQUB 4 \ blue | |
EQUB 5 \ magenta | |
EQUB 5 \ magenta | |
EQUB 5 \ magenta | |
EQUB 1 \ red | |
EQUB 1 \ red | |
EQUB 1 \ red | |
EQUB 1 \ red | |
EQUB 3 \ yellow | |
EQUB 3 \ yellow | |
EQUB 3 \ yellow | |
EQUB 7 \ white | |
.crtc_config | |
EQUB 63 \ R0 Horizontal total | |
EQUB 20 \ R1 Characters per line | |
EQUB 39 \ R2 Horizontal sync position | |
EQUB &24 \ R3 Sync length | |
EQUB 77 \ R4 Vertical total | |
EQUB 0 \ R5 Vertical total adjust | |
EQUB 51 \ R6 Vertical displayed characters | |
EQUB 60 \ R7 Vertical sync position | |
EQUB &00 \ R8 Interlace and delay | |
EQUB 3 \ R9 Scan lines per character | |
EQUB &20 \ R10 Cursor start and type | |
EQUB 0 \ R11 Cursor end | |
EQUB &28 \ R12 Screen start high | |
.end | |
PRINT "Size: ", end-start | |
SAVE "Main", start, end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment