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