10 REM Mode 0 Portrait Dump (Dark) 20 REM after W.Trevelyan 30 REM by M.Bobrowski 5'94 40 : 45 MODE0 50 x=&70:z=&72:pix=&74:count=&75 60 octet=&76:y=&7E:flag=&80 70 osword=&FFF1:oswrch=&FFEE:osbyte=&FFF4 80 FOR pass=0 TO 2 STEP 2 90 P%=&900 100 [OPT pass 110 LDA #26:JSR oswrch 120 LDA #3:LDX #10:JSR osbyte \ output to printer 130 LDA #0:STA flag 140 .begin 150 LDA #252:STA y 160 LDA #3:STA y+1 \ Y=1020 170 .newline 180 LDA #0:STA x:STA x+1 \ X=0 190 .bit 200 JSR esc 210 LDA #90:JSR oswrch 220 LDA #128:JSR oswrch 230 LDA #7:JSR oswrch \ 1920 dots per line 240 .start 250 LDA #4:STA count 260 LDA y:STA z:LDA y+1:STA z+1 270 .readpix 280 LDX #&70:LDY #0:LDA #9 290 JSR osword \ logical colour returned in &74 300 LDA pix:AND #7:TAY \ logical colour used as index to pattern 310 .byte 320 LDX #0 330 LDA pattern,Y 340 .loop1 350 LSR A:ROL octet,X 360 LSR A:ROL octet,X \ 2 bits transferred from pattern to each byte in turn 370 INX:CPX #3 380 BNE loop1 390 .loop2 400 DEC count 410 BEQ print 420 SEC:LDA z:SBC #4:STA z 430 BCS carryset:DEC z+1 440 .carryset 450 JMP readpix 460 .print 470 LDX #0 480 .loop3 490 LDA octet,X:JSR oswrch 500 INX:CPX #3:BNE loop3 510 \ increase X 520 CLC:LDA x:ADC #2:STA x 530 LDA x+1:ADC #0:STA x+1 540 CMP #5 \ end of line? (X=1280) 550 BNE start 560 LDA flag:EOR #255:STA flag \ toggle flag 570 BEQ nextline \ if flag=0 go to next line 580 JSR esc \ if flag=-1 print again the same line 590 LDA #51:JSR oswrch 600 LDA #1:JSR oswrch 610 LDA #13:JSR oswrch 620 JMP newline 630 .nextline 640 JSR spacing 650 \ go down 4 pixels 660 SEC:LDA y:SBC #16:STA y 670 LDA y+1:SBC #0:STA y+1 680 BCC end \ finish when Y=0 690 JMP newline \ otherwise continue 700 .end 710 LDA #7:JSR oswrch \ beep 720 JSR esc 730 LDA #64:JSR oswrch \ return printer to default setting 740 LDA #3:LDX #0:JMP osbyte \ output to screen 750 .esc 760 LDA #27:JMP oswrch 770 .spacing 780 JSR esc 790 LDA #51:JSR oswrch 800 LDA #23:JSR oswrch 810 LDA #13:JMP oswrch 820 .pattern 830 EQUD &FFFFFF00:EQUD &FFFFFF00 840 ] 850 NEXT pass 860 PRINT'"To save code press COPY ";:REPEAT UNTIL INKEY-106:PRINT 870 OSCLI"SA.SDump0D 900 "+STR$~P% 880 END