This commit is contained in:
Jesenko, Jakob 2025-12-01 12:17:48 +01:00
parent 630b6a5086
commit 6d722acba9
2 changed files with 220 additions and 0 deletions

6
AF.dev Normal file

File diff suppressed because one or more lines are too long

214
ppm.asm Normal file
View file

@ -0,0 +1,214 @@
ppm START 0
LDA #stack
STA sp
CLEAR B
hloop CLEAR A
RD inputd
WD #1
COMP #10
JEQ ln2
J hloop
ln2 CLEAR A
RD inputd
COMP #35 .#
JEQ comm
J dims1
comm WD #1
ln2lp CLEAR A
RD inputd
WD #1
COMP #10
JEQ dims
J ln2lp
dims RD inputd
dims1 COMP #32
JEQ dims1e
WD #1
SUB #48 .0
ADDR A,B
LDA #10
MULR A,B
RD inputd
J dims1
dims1e WD #1
LDA #10
DIVR A,B
STB width
CLEAR B
RD inputd
dims2 COMP #10
JEQ dims2e
WD #1
SUB #48 .0
ADDR A,B
LDA #10
MULR A,B
RD inputd
J dims2
dims2e WD #1
LDA #10
DIVR A,B
STB height
CLEAR B
RD inputd
dims3 COMP #10
JEQ dims3e
WD #1
SUB #48 .0
ADDR A,B
LDA #10
MULR A,B
RD inputd
J dims3
dims3e WD #1
LDA #10
DIVR A,B
STB maxval
CLEAR B
LDA width
MUL height
STA pixcnt
mainlp CLEAR A
CLEAR B
RD inputd
STCH red
RD inputd
STCH green
RD inputd
STCH blue
JSUB intens
LDCH clrmax
DIV #64
ADDR A,B
SHIFTL B,2
LDCH red
DIV #64
ADDR A,B
SHIFTL B,2
LDCH green
DIV #64
ADDR A,B
SHIFTL B,2
LDCH blue
DIV #64
ADDR B,A
STCH @pixptr
LDA pixptr
ADD #1
STA pixptr
LDA pixctr
ADD #1
STA pixctr
DIV width
MUL width
COMP pixctr
JEQ ptradj
adjret
LDA pixctr
COMP pixcnt
JEQ halt
J mainlp
J halt
ptradj LDA pixptr
SUB width
ADD cols
STA pixptr
J adjret
LDA screen
STA pixptr
STA srtptr
srtlp2 CLEAR A
LDCH @pixptr
RMO A,B
LDCH @srtptr
COMPR A,B
JLT srtswp
ssret LDA srtptr
ADD #1
STA srtptr
LDA screen
ADD cols
COMP srtptr
JEQ next
nret J srtlp2
LDA #0
srtswp STCH @pixptr
RMO B,A
STCH @srtptr
J ssret
next LDA srtptr
ADD #1
STA srtptr
J nret
halt J halt
intens STA @sp
LDA sp
ADD #3
STA sp
STB @sp
ADD #3
STA sp
...
CLEAR A
LDA red
COMP green
JLT swpgrn
retgrn COMP blue
JLT swpblu
retblu STA clrmax
...
LDA sp
SUB #3
STA sp
LDB @sp
SUB #3
STA sp
LDA @sp
RSUB
swpgrn LDA green
J retgrn
swpblu LDA blue
J retblu
inputd BYTE X'AF'
width RESW 1
height RESW 1
maxval RESW 1
pixcnt RESW 1
rows WORD 64
cols WORD 64
pixptr WORD X'00A000'
screen WORD X'00A000'
pixctr WORD 0
srtptr RESW 1
red RESW 1
green RESW 1
blue RESW 1
clrmax RESW 0
sp RESW 1
stack RESW 1024
END ppm