214 lines
2.1 KiB
NASM
214 lines
2.1 KiB
NASM
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
|