Home » CEEFAX disks » telesoftware3.adl » 21_11_87/PRNTSRC
21_11_87/PRNTSRC
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » CEEFAX disks » telesoftware3.adl |
Filename: | 21_11_87/PRNTSRC |
Read OK: | ✔ |
File size: | 1416 bytes |
Load address: | 1A00 |
Exec address: | 8023 |
Duplicates
There are 2 duplicate copies of this file in the archive:
- CEEFAX disks » telesoftware5.adl » 04-03-88/PRNTSRC
- CEEFAX disks » telesoftware2.adl » 26_09_87/PRNTSRC
- CEEFAX disks » telesoftware3.adl » 21_11_87/PRNTSRC
File contents
10REM Source for 'TTXPrnt' by Graham Bartram (c) BBC tv 17/11/86 20 30A%=&EA : X%=0 : Y%=&FF : REM Setup to test for presence of TUBE. 40IF USR(&FFF4) AND &FF00 THEN PRINT'" This program must be assembled in the I/O processor - please turn off your second processor and start again.":END 50 60osasci = &FFE3 70osnewl = &FFE7 80oswrch = &FFEE 90osbyte = &FFF4 100 110FOR pass = 0 TO 3 STEP 2 120P%=&A00 130 140[ OPT pass 150 LDA &20C : STA vec \ Save OSWORD vector 160 LDA &20D : STA vec+1 170 180 LDA #Code MOD256 : STA &20C \ Point vector at new 'Code' 190 LDA #Code DIV256 : STA &20D 200 RTS 210 220.Code CMP #&7A : BNE Code3 \ OSWORD entry - exit if not for us 230 STX &70 : STY &71 \ Save registers 240 LDY #0 : LDA (&70),Y \ Read first parameter 250 CMP #&A0 : BNE Code2 \ Exit if not for us 260 INY : LDA (&70),Y \ Read second parameter 270 CMP #25 : BEQ Print \ and branch if ours 280.Code2 LDY &71 : LDA #&7A \ else restore registers 290.Code3 JMP (vec) \ and exit via old OSWORD vector 300 310.Print 320 LDA #30 : JSR oswrch \ 'HOME' TEXT CURSOR 330 LDA #2 : JSR oswrch \ Enable printer 340 350.NewLine 360 LDA #0 \ Clear flags at start of line 370 STA graphics 380 STA double 390 TAY 400 410.Loop 420 TYA : PHA \ Save horiz position counter 430 LDA #135 : JSR osbyte \ Read character at text cursor 440 TXA : AND #127 : TAX \ Mask off top bit 450 CPX #8 : BCS notalpha 460 LDA #0 : STA graphics \ Clear flag if 'alpha colour' code 470 480.notalpha 490 CPX #16 : BCC notgraphics 500 CPX #24 : BCS notgraphics 510 STX graphics \ Set flag if 'graphics colour' code 520 530.notgraphics 540 CPX #13 : BNE notdouble 550 STX double \ Set flag if 'double height' code 560 570.notdouble 580 LDA graphics : BNE makespace \ Branch if graphics flag set 590 CPX #32 : BCS charok \ Branch if not control code 600 610.makespace 620 CPX #65 : BCC makespace2 \ If 'Blast-Through' alpha then 630 CPX #96 : BCC charok \ continue ... 640 650.makespace2 660 LDX #32 \ ... else replace by space 670 680.charok 690 CPX #127 : BEQ makespace2 \ Also blank the block character 700 710 TXA : PHA \ Save character, 720 JSR prton \ turn on printer, 730 PLA : JSR oswrch \ retrieve and print character, 740 JSR prtoff \ and turn off printer. 750 760 LDA #9 : JSR oswrch \ TAB cursor to next position 770 PLA : TAY \ Retrieve horiz pos. counter 780 INY \ and increment 790 CPY #40 : BNE Loop \ Loop for 40 characters 800 810 JSR prton \ Turn on printer, 820 JSR osnewl \ Send LF/CR to printer, 830 JSR prtoff \ and turn off printer again. 840 LDA double : BEQ nodoubles \ Bypass if double height flag clear, 850 JSR prton : JSR osnewl \ else send another LF/CR to printer, 860 JSR prtoff \ and move screen cursor to ignore 870 LDA #13 : JSR osasci \ second double height row. 880 890.nodoubles 900 LDA #&86 : JSR osbyte \ Read text cursor position 910 CPY #24 : BCS End 920 JMP NewLine 930 940.End 950 JSR prton 960 JSR osnewl : JSR osnewl \ Extra line feeds to printer 970 JSR osnewl : JSR osnewl \ at bottom of page. 980 LDA #3 : LDX #0 : JSR osbyte \ Screen and Printer enabled 990 LDA #3 : JSR oswrch \ Finally disable printer. 1000 LDX &70 : LDY &71 : LDA #0 \ Restore registers, 1010 RTS \ and exit 1020 1030.prton LDA #3 : LDX #10 : JMP osbyte\ Enable printer, disable screen 1040.prtoff LDA #3 : LDX #4 : JMP osbyte \ Disable printer, enable screen 1050 1060.vec BRK : BRK \ Storage for old OSWORD vector 1070.graphics BRK \ Graphics flag 1080.double BRK \ Double-Height flag 1090] 1100NEXT 1110 1120*SAVE TTXPrnt FFFF0A00+100 1130 1140REM If a graphics screen dump ROM is available, for example PRINTMASTER, 1150REM this may be called by modifying the program as follows: 1160REM Add line 95 oscli = &FFF7 1170REM Delete lines 320 to 930, and add : 1180REM 320 LDX #cmdstring MOD 256 1190REM 330 LDY #cmdstring DIV 256 1200REM 340 JSR oscli 1210REM Delete lines 950 to 990, and 1030 to 1070 1220REM and add line 1090.cmdstring : ] 1230REM and line 1095 $P%="GDUMP" (Modify command as required)
D� Source for 'TTXPrnt' by Graham Bartram (c) BBC tv 17/11/86 BA%=&EA : X%=0 : Y%=&FF : � Setup to test for presence of TUBE. (�� �(&FFF4) � &FF00 � �'" This program must be assembled in the I/O processor - please turn off your second processor and start again.":� 2 <osasci = &FFE3 Fosnewl = &FFE7 Poswrch = &FFEE Zosbyte = &FFF4 d n� pass = 0 � 3 � 2 xP%=&A00 � �[ OPT pass �? LDA &20C : STA vec \ Save OSWORD vector �" LDA &20D : STA vec+1 � �E LDA #Code �256 : STA &20C \ Point vector at new 'Code' �' LDA #Code �256 : STA &20D � RTS � �N.Code CMP #&7A : BNE Code3 \ OSWORD entry - exit if not for us �; STX &70 : STY &71 \ Save registers �A LDY #0 : LDA (&70),Y \ Read first parameter �? CMP #&A0 : BNE Code2 \ Exit if not for us B INY : LDA (&70),Y \ Read second parameter ? CMP #25 : BEQ Print \ and branch if ours C.Code2 LDY &71 : LDA #&7A \ else restore registers "K.Code3 JMP (vec) \ and exit via old OSWORD vector , 6 .Print @? LDA #30 : JSR oswrch \ 'HOME' TEXT CURSOR J; LDA #2 : JSR oswrch \ Enable printer T ^.NewLine hI LDA #0 \ Clear flags at start of line r STA graphics | STA double � TAY � � .Loop �H TYA : PHA \ Save horiz position counter �J LDA #135 : JSR osbyte \ Read character at text cursor �; TXA : � #127 : TAX \ Mask off top bit �# CPX #8 : BCS notalpha �N LDA #0 : STA graphics \ Clear flag if 'alpha colour' code � � .notalpha �' CPX #16 : BCC notgraphics �' CPX #24 : BCS notgraphics �O STX graphics \ Set flag if 'graphics colour' code .notgraphics % CPX #13 : BNE notdouble &M STX double \ Set flag if 'double height' code 0 :.notdouble DH LDA graphics : BNE makespace \ Branch if graphics flag set NG CPX #32 : BCS charok \ Branch if not control code X b.makespace lJ CPX #65 : BCC makespace2 \ If 'Blast-Through' alpha then v9 CPX #96 : BCC charok \ continue ... � �.makespace2 �F LDX #32 \ ... else replace by space � �.charok �K CPX #127 : BEQ makespace2 \ Also blank the block character � �< TXA : PHA \ Save character, �= JSR prton \ turn on printer, �J PLA : JSR oswrch \ retrieve and print character, �B JSR prtoff \ and turn off printer. � �H LDA #9 : JSR oswrch \ TAB cursor to next position H PLA : TAY \ Retrieve horiz pos. counter : INY \ and increment C CPY #40 : BNE Loop \ Loop for 40 characters *= JSR prton \ Turn on printer, 4C JSR osnewl \ Send LF/CR to printer, >H JSR prtoff \ and turn off printer again. HP LDA double : BEQ nodoubles \ Bypass if double height flag clear, RP JSR prton : JSR osnewl \ else send another LF/CR to printer, \M JSR prtoff \ and move screen cursor to ignore fF LDA #13 : JSR osasci \ second double height row. p z.nodoubles �F LDA #&86 : JSR osbyte \ Read text cursor position � CPY #24 : BCS End � JMP NewLine � �.End � JSR prton �H JSR osnewl : JSR osnewl \ Extra line feeds to printer �? JSR osnewl : JSR osnewl \ at bottom of page. �G LDA #3 : LDX #0 : JSR osbyte \ Screen and Printer enabled �E LDA #3 : JSR oswrch \ Finally disable printer. �? LDX &70 : LDY &71 : LDA #0 \ Restore registers, �5 RTS \ and exit � K.prton LDA #3 : LDX #10 : JMP osbyte\ Enable printer, disable screen K.prtoff LDA #3 : LDX #4 : JMP osbyte \ Disable printer, enable screen $J.vec BRK : BRK \ Storage for old OSWORD vector .:.graphics BRK \ Graphics flag 8?.double BRK \ Double-Height flag B] L� V `*SAVE TTXPrnt FFFF0A00+100 j tJ� If a graphics screen dump ROM is available, for example PRINTMASTER, ~=� this may be called by modifying the program as follows: �&� Add line 95 oscli = &FFF7 �*� Delete lines 320 to 930, and add : �/� 320 LDX #cmdstring MOD 256 �/� 330 LDY #cmdstring DIV 256 �"� 340 JSR oscli �1� Delete lines 950 to 990, and 1030 to 1070 �&� and add line 1090.cmdstring : ] �C� and line 1095 $P%="GDUMP" (Modify command as required) �
00000000 0d 00 0a 44 f4 20 53 6f 75 72 63 65 20 66 6f 72 |...D. Source for| 00000010 20 27 54 54 58 50 72 6e 74 27 20 62 79 20 47 72 | 'TTXPrnt' by Gr| 00000020 61 68 61 6d 20 42 61 72 74 72 61 6d 20 20 20 28 |aham Bartram (| 00000030 63 29 20 42 42 43 20 74 76 20 20 20 31 37 2f 31 |c) BBC tv 17/1| 00000040 31 2f 38 36 0d 00 14 05 20 0d 00 1e 42 41 25 3d |1/86.... ...BA%=| 00000050 26 45 41 20 3a 20 58 25 3d 30 20 3a 20 59 25 3d |&EA : X%=0 : Y%=| 00000060 26 46 46 20 3a 20 f4 20 53 65 74 75 70 20 74 6f |&FF : . Setup to| 00000070 20 74 65 73 74 20 66 6f 72 20 70 72 65 73 65 6e | test for presen| 00000080 63 65 20 6f 66 20 54 55 42 45 2e 0d 00 28 90 e7 |ce of TUBE...(..| 00000090 20 ba 28 26 46 46 46 34 29 20 80 20 26 46 46 30 | .(&FFF4) . &FF0| 000000a0 30 20 8c 20 f1 27 22 20 20 54 68 69 73 20 70 72 |0 . .'" This pr| 000000b0 6f 67 72 61 6d 20 6d 75 73 74 20 62 65 20 61 73 |ogram must be as| 000000c0 73 65 6d 62 6c 65 64 20 69 6e 20 74 68 65 20 49 |sembled in the I| 000000d0 2f 4f 20 70 72 6f 63 65 73 73 6f 72 20 2d 20 70 |/O processor - p| 000000e0 6c 65 61 73 65 20 74 75 72 6e 20 6f 66 66 20 79 |lease turn off y| 000000f0 6f 75 72 20 20 20 20 73 65 63 6f 6e 64 20 70 72 |our second pr| 00000100 6f 63 65 73 73 6f 72 20 61 6e 64 20 73 74 61 72 |ocessor and star| 00000110 74 20 61 67 61 69 6e 2e 22 3a e0 0d 00 32 05 20 |t again.":...2. | 00000120 0d 00 3c 12 6f 73 61 73 63 69 20 3d 20 26 46 46 |..<.osasci = &FF| 00000130 45 33 0d 00 46 12 6f 73 6e 65 77 6c 20 3d 20 26 |E3..F.osnewl = &| 00000140 46 46 45 37 0d 00 50 12 6f 73 77 72 63 68 20 3d |FFE7..P.oswrch =| 00000150 20 26 46 46 45 45 0d 00 5a 12 6f 73 62 79 74 65 | &FFEE..Z.osbyte| 00000160 20 3d 20 26 46 46 46 34 0d 00 64 05 20 0d 00 6e | = &FFF4..d. ..n| 00000170 16 e3 20 70 61 73 73 20 3d 20 30 20 b8 20 33 20 |.. pass = 0 . 3 | 00000180 88 20 32 0d 00 78 0b 50 25 3d 26 41 30 30 0d 00 |. 2..x.P%=&A00..| 00000190 82 05 20 0d 00 8c 0e 5b 20 4f 50 54 20 70 61 73 |.. ....[ OPT pas| 000001a0 73 0d 00 96 3f 20 20 20 20 20 20 20 20 20 20 4c |s...? L| 000001b0 44 41 20 26 32 30 43 20 3a 20 53 54 41 20 76 65 |DA &20C : STA ve| 000001c0 63 20 20 20 20 20 20 20 20 20 20 20 5c 20 53 61 |c \ Sa| 000001d0 76 65 20 4f 53 57 4f 52 44 20 76 65 63 74 6f 72 |ve OSWORD vector| 000001e0 0d 00 a0 22 20 20 20 20 20 20 20 20 20 20 4c 44 |..." LD| 000001f0 41 20 26 32 30 44 20 3a 20 53 54 41 20 76 65 63 |A &20D : STA vec| 00000200 2b 31 0d 00 aa 05 20 0d 00 b4 45 20 20 20 20 20 |+1.... ...E | 00000210 20 20 20 20 20 4c 44 41 20 23 43 6f 64 65 20 83 | LDA #Code .| 00000220 32 35 36 20 3a 20 53 54 41 20 26 32 30 43 20 20 |256 : STA &20C | 00000230 5c 20 50 6f 69 6e 74 20 76 65 63 74 6f 72 20 61 |\ Point vector a| 00000240 74 20 6e 65 77 20 27 43 6f 64 65 27 0d 00 be 27 |t new 'Code'...'| 00000250 20 20 20 20 20 20 20 20 20 20 4c 44 41 20 23 43 | LDA #C| 00000260 6f 64 65 20 81 32 35 36 20 3a 20 53 54 41 20 26 |ode .256 : STA &| 00000270 32 30 44 0d 00 c8 11 20 20 20 20 20 20 20 20 20 |20D.... | 00000280 20 52 54 53 0d 00 d2 05 20 0d 00 dc 4e 2e 43 6f | RTS.... ...N.Co| 00000290 64 65 20 20 20 20 20 43 4d 50 20 23 26 37 41 20 |de CMP #&7A | 000002a0 3a 20 42 4e 45 20 43 6f 64 65 33 20 20 20 20 20 |: BNE Code3 | 000002b0 20 20 20 20 5c 20 4f 53 57 4f 52 44 20 65 6e 74 | \ OSWORD ent| 000002c0 72 79 20 2d 20 65 78 69 74 20 69 66 20 6e 6f 74 |ry - exit if not| 000002d0 20 66 6f 72 20 75 73 0d 00 e6 3b 20 20 20 20 20 | for us...; | 000002e0 20 20 20 20 20 53 54 58 20 26 37 30 20 3a 20 53 | STX &70 : S| 000002f0 54 59 20 26 37 31 20 20 20 20 20 20 20 20 20 20 |TY &71 | 00000300 20 20 5c 20 53 61 76 65 20 72 65 67 69 73 74 65 | \ Save registe| 00000310 72 73 0d 00 f0 41 20 20 20 20 20 20 20 20 20 20 |rs...A | 00000320 4c 44 59 20 23 30 20 3a 20 4c 44 41 20 28 26 37 |LDY #0 : LDA (&7| 00000330 30 29 2c 59 20 20 20 20 20 20 20 20 20 5c 20 52 |0),Y \ R| 00000340 65 61 64 20 66 69 72 73 74 20 70 61 72 61 6d 65 |ead first parame| 00000350 74 65 72 0d 00 fa 3f 20 20 20 20 20 20 20 20 20 |ter...? | 00000360 20 43 4d 50 20 23 26 41 30 20 3a 20 42 4e 45 20 | CMP #&A0 : BNE | 00000370 43 6f 64 65 32 20 20 20 20 20 20 20 20 20 5c 20 |Code2 \ | 00000380 45 78 69 74 20 69 66 20 6e 6f 74 20 66 6f 72 20 |Exit if not for | 00000390 75 73 0d 01 04 42 20 20 20 20 20 20 20 20 20 20 |us...B | 000003a0 49 4e 59 20 3a 20 4c 44 41 20 28 26 37 30 29 2c |INY : LDA (&70),| 000003b0 59 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 52 |Y \ R| 000003c0 65 61 64 20 73 65 63 6f 6e 64 20 70 61 72 61 6d |ead second param| 000003d0 65 74 65 72 0d 01 0e 3f 20 20 20 20 20 20 20 20 |eter...? | 000003e0 20 20 43 4d 50 20 23 32 35 20 3a 20 42 45 51 20 | CMP #25 : BEQ | 000003f0 50 72 69 6e 74 20 20 20 20 20 20 20 20 20 20 5c |Print \| 00000400 20 61 6e 64 20 62 72 61 6e 63 68 20 69 66 20 6f | and branch if o| 00000410 75 72 73 0d 01 18 43 2e 43 6f 64 65 32 20 20 20 |urs...C.Code2 | 00000420 20 4c 44 59 20 26 37 31 20 3a 20 4c 44 41 20 23 | LDY &71 : LDA #| 00000430 26 37 41 20 20 20 20 20 20 20 20 20 20 20 5c 20 |&7A \ | 00000440 65 6c 73 65 20 72 65 73 74 6f 72 65 20 72 65 67 |else restore reg| 00000450 69 73 74 65 72 73 0d 01 22 4b 2e 43 6f 64 65 33 |isters.."K.Code3| 00000460 20 20 20 20 4a 4d 50 20 28 76 65 63 29 20 20 20 | JMP (vec) | 00000470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000480 20 5c 20 61 6e 64 20 65 78 69 74 20 76 69 61 20 | \ and exit via | 00000490 6f 6c 64 20 4f 53 57 4f 52 44 20 76 65 63 74 6f |old OSWORD vecto| 000004a0 72 0d 01 2c 05 20 0d 01 36 0a 2e 50 72 69 6e 74 |r..,. ..6..Print| 000004b0 0d 01 40 3f 20 20 20 20 20 20 20 20 20 20 4c 44 |..@? LD| 000004c0 41 20 23 33 30 20 3a 20 4a 53 52 20 6f 73 77 72 |A #30 : JSR oswr| 000004d0 63 68 20 20 20 20 20 20 20 20 20 5c 20 27 48 4f |ch \ 'HO| 000004e0 4d 45 27 20 54 45 58 54 20 43 55 52 53 4f 52 0d |ME' TEXT CURSOR.| 000004f0 01 4a 3b 20 20 20 20 20 20 20 20 20 20 4c 44 41 |.J; LDA| 00000500 20 23 32 20 3a 20 4a 53 52 20 6f 73 77 72 63 68 | #2 : JSR oswrch| 00000510 20 20 20 20 20 20 20 20 20 20 5c 20 45 6e 61 62 | \ Enab| 00000520 6c 65 20 70 72 69 6e 74 65 72 0d 01 54 05 20 0d |le printer..T. .| 00000530 01 5e 0c 2e 4e 65 77 4c 69 6e 65 0d 01 68 49 20 |.^..NewLine..hI | 00000540 20 20 20 20 20 20 20 20 20 4c 44 41 20 23 30 20 | LDA #0 | 00000550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000560 20 20 20 20 20 20 5c 20 43 6c 65 61 72 20 66 6c | \ Clear fl| 00000570 61 67 73 20 61 74 20 73 74 61 72 74 20 6f 66 20 |ags at start of | 00000580 6c 69 6e 65 0d 01 72 1a 20 20 20 20 20 20 20 20 |line..r. | 00000590 20 20 53 54 41 20 67 72 61 70 68 69 63 73 0d 01 | STA graphics..| 000005a0 7c 18 20 20 20 20 20 20 20 20 20 20 53 54 41 20 ||. STA | 000005b0 64 6f 75 62 6c 65 0d 01 86 11 20 20 20 20 20 20 |double.... | 000005c0 20 20 20 20 54 41 59 0d 01 90 05 20 0d 01 9a 09 | TAY.... ....| 000005d0 2e 4c 6f 6f 70 0d 01 a4 48 20 20 20 20 20 20 20 |.Loop...H | 000005e0 20 20 20 54 59 41 20 3a 20 50 48 41 20 20 20 20 | TYA : PHA | 000005f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000600 5c 20 53 61 76 65 20 68 6f 72 69 7a 20 70 6f 73 |\ Save horiz pos| 00000610 69 74 69 6f 6e 20 63 6f 75 6e 74 65 72 0d 01 ae |ition counter...| 00000620 4a 20 20 20 20 20 20 20 20 20 20 4c 44 41 20 23 |J LDA #| 00000630 31 33 35 20 3a 20 4a 53 52 20 6f 73 62 79 74 65 |135 : JSR osbyte| 00000640 20 20 20 20 20 20 20 20 5c 20 52 65 61 64 20 63 | \ Read c| 00000650 68 61 72 61 63 74 65 72 20 61 74 20 74 65 78 74 |haracter at text| 00000660 20 63 75 72 73 6f 72 0d 01 b8 3b 20 20 20 20 20 | cursor...; | 00000670 20 20 20 20 20 54 58 41 20 3a 20 80 20 23 31 32 | TXA : . #12| 00000680 37 20 3a 20 54 41 58 20 20 20 20 20 20 20 20 20 |7 : TAX | 00000690 5c 20 4d 61 73 6b 20 6f 66 66 20 74 6f 70 20 62 |\ Mask off top b| 000006a0 69 74 0d 01 c2 23 20 20 20 20 20 20 20 20 20 20 |it...# | 000006b0 43 50 58 20 23 38 20 3a 20 42 43 53 20 6e 6f 74 |CPX #8 : BCS not| 000006c0 61 6c 70 68 61 0d 01 cc 4e 20 20 20 20 20 20 20 |alpha...N | 000006d0 20 20 20 4c 44 41 20 23 30 20 3a 20 53 54 41 20 | LDA #0 : STA | 000006e0 67 72 61 70 68 69 63 73 20 20 20 20 20 20 20 20 |graphics | 000006f0 5c 20 43 6c 65 61 72 20 66 6c 61 67 20 69 66 20 |\ Clear flag if | 00000700 27 61 6c 70 68 61 20 63 6f 6c 6f 75 72 27 20 63 |'alpha colour' c| 00000710 6f 64 65 0d 01 d6 05 20 0d 01 e0 0d 2e 6e 6f 74 |ode.... .....not| 00000720 61 6c 70 68 61 0d 01 ea 27 20 20 20 20 20 20 20 |alpha...' | 00000730 20 20 20 43 50 58 20 23 31 36 20 3a 20 42 43 43 | CPX #16 : BCC| 00000740 20 6e 6f 74 67 72 61 70 68 69 63 73 0d 01 f4 27 | notgraphics...'| 00000750 20 20 20 20 20 20 20 20 20 20 43 50 58 20 23 32 | CPX #2| 00000760 34 20 3a 20 42 43 53 20 6e 6f 74 67 72 61 70 68 |4 : BCS notgraph| 00000770 69 63 73 0d 01 fe 4f 20 20 20 20 20 20 20 20 20 |ics...O | 00000780 20 53 54 58 20 67 72 61 70 68 69 63 73 20 20 20 | STX graphics | 00000790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 | \ | 000007a0 53 65 74 20 66 6c 61 67 20 69 66 20 27 67 72 61 |Set flag if 'gra| 000007b0 70 68 69 63 73 20 63 6f 6c 6f 75 72 27 20 63 6f |phics colour' co| 000007c0 64 65 0d 02 08 05 20 0d 02 12 10 2e 6e 6f 74 67 |de.... .....notg| 000007d0 72 61 70 68 69 63 73 0d 02 1c 25 20 20 20 20 20 |raphics...% | 000007e0 20 20 20 20 20 43 50 58 20 23 31 33 20 3a 20 42 | CPX #13 : B| 000007f0 4e 45 20 6e 6f 74 64 6f 75 62 6c 65 0d 02 26 4d |NE notdouble..&M| 00000800 20 20 20 20 20 20 20 20 20 20 53 54 58 20 64 6f | STX do| 00000810 75 62 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 |uble | 00000820 20 20 20 20 20 20 20 5c 20 53 65 74 20 66 6c 61 | \ Set fla| 00000830 67 20 69 66 20 27 64 6f 75 62 6c 65 20 68 65 69 |g if 'double hei| 00000840 67 68 74 27 20 63 6f 64 65 0d 02 30 05 20 0d 02 |ght' code..0. ..| 00000850 3a 0e 2e 6e 6f 74 64 6f 75 62 6c 65 0d 02 44 48 |:..notdouble..DH| 00000860 20 20 20 20 20 20 20 20 20 20 4c 44 41 20 67 72 | LDA gr| 00000870 61 70 68 69 63 73 20 3a 20 42 4e 45 20 6d 61 6b |aphics : BNE mak| 00000880 65 73 70 61 63 65 20 5c 20 42 72 61 6e 63 68 20 |espace \ Branch | 00000890 69 66 20 67 72 61 70 68 69 63 73 20 66 6c 61 67 |if graphics flag| 000008a0 20 73 65 74 0d 02 4e 47 20 20 20 20 20 20 20 20 | set..NG | 000008b0 20 20 43 50 58 20 23 33 32 20 3a 20 42 43 53 20 | CPX #32 : BCS | 000008c0 63 68 61 72 6f 6b 20 20 20 20 20 20 20 20 20 5c |charok \| 000008d0 20 42 72 61 6e 63 68 20 69 66 20 6e 6f 74 20 63 | Branch if not c| 000008e0 6f 6e 74 72 6f 6c 20 63 6f 64 65 0d 02 58 05 20 |ontrol code..X. | 000008f0 0d 02 62 0e 2e 6d 61 6b 65 73 70 61 63 65 0d 02 |..b..makespace..| 00000900 6c 4a 20 20 20 20 20 20 20 20 20 20 43 50 58 20 |lJ CPX | 00000910 23 36 35 20 3a 20 42 43 43 20 6d 61 6b 65 73 70 |#65 : BCC makesp| 00000920 61 63 65 32 20 20 20 20 20 5c 20 49 66 20 27 42 |ace2 \ If 'B| 00000930 6c 61 73 74 2d 54 68 72 6f 75 67 68 27 20 61 6c |last-Through' al| 00000940 70 68 61 20 74 68 65 6e 0d 02 76 39 20 20 20 20 |pha then..v9 | 00000950 20 20 20 20 20 20 43 50 58 20 23 39 36 20 3a 20 | CPX #96 : | 00000960 42 43 43 20 63 68 61 72 6f 6b 20 20 20 20 20 20 |BCC charok | 00000970 20 20 20 5c 20 63 6f 6e 74 69 6e 75 65 20 2e 2e | \ continue ..| 00000980 2e 0d 02 80 05 20 0d 02 8a 0f 2e 6d 61 6b 65 73 |..... .....makes| 00000990 70 61 63 65 32 0d 02 94 46 20 20 20 20 20 20 20 |pace2...F | 000009a0 20 20 20 4c 44 58 20 23 33 32 20 20 20 20 20 20 | LDX #32 | 000009b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000009c0 5c 20 2e 2e 2e 20 65 6c 73 65 20 72 65 70 6c 61 |\ ... else repla| 000009d0 63 65 20 62 79 20 73 70 61 63 65 0d 02 9e 05 20 |ce by space.... | 000009e0 0d 02 a8 0b 2e 63 68 61 72 6f 6b 0d 02 b2 4b 20 |.....charok...K | 000009f0 20 20 20 20 20 20 20 20 20 43 50 58 20 23 31 32 | CPX #12| 00000a00 37 20 3a 20 42 45 51 20 6d 61 6b 65 73 70 61 63 |7 : BEQ makespac| 00000a10 65 32 20 20 20 20 5c 20 41 6c 73 6f 20 62 6c 61 |e2 \ Also bla| 00000a20 6e 6b 20 74 68 65 20 62 6c 6f 63 6b 20 63 68 61 |nk the block cha| 00000a30 72 61 63 74 65 72 0d 02 bc 05 20 0d 02 c6 3c 20 |racter.... ...< | 00000a40 20 20 20 20 20 20 20 20 20 54 58 41 20 3a 20 50 | TXA : P| 00000a50 48 41 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |HA | 00000a60 20 20 20 20 20 20 5c 20 53 61 76 65 20 63 68 61 | \ Save cha| 00000a70 72 61 63 74 65 72 2c 0d 02 d0 3d 20 20 20 20 20 |racter,...= | 00000a80 20 20 20 20 20 4a 53 52 20 70 72 74 6f 6e 20 20 | JSR prton | 00000a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000aa0 20 20 5c 20 74 75 72 6e 20 6f 6e 20 70 72 69 6e | \ turn on prin| 00000ab0 74 65 72 2c 0d 02 da 4a 20 20 20 20 20 20 20 20 |ter,...J | 00000ac0 20 20 50 4c 41 20 3a 20 4a 53 52 20 6f 73 77 72 | PLA : JSR oswr| 00000ad0 63 68 20 20 20 20 20 20 20 20 20 20 20 20 20 5c |ch \| 00000ae0 20 72 65 74 72 69 65 76 65 20 61 6e 64 20 70 72 | retrieve and pr| 00000af0 69 6e 74 20 63 68 61 72 61 63 74 65 72 2c 0d 02 |int character,..| 00000b00 e4 42 20 20 20 20 20 20 20 20 20 20 4a 53 52 20 |.B JSR | 00000b10 70 72 74 6f 66 66 20 20 20 20 20 20 20 20 20 20 |prtoff | 00000b20 20 20 20 20 20 20 20 20 20 5c 20 61 6e 64 20 74 | \ and t| 00000b30 75 72 6e 20 6f 66 66 20 70 72 69 6e 74 65 72 2e |urn off printer.| 00000b40 0d 02 ee 05 20 0d 02 f8 48 20 20 20 20 20 20 20 |.... ...H | 00000b50 20 20 20 4c 44 41 20 23 39 20 3a 20 4a 53 52 20 | LDA #9 : JSR | 00000b60 6f 73 77 72 63 68 20 20 20 20 20 20 20 20 20 20 |oswrch | 00000b70 5c 20 54 41 42 20 63 75 72 73 6f 72 20 74 6f 20 |\ TAB cursor to | 00000b80 6e 65 78 74 20 70 6f 73 69 74 69 6f 6e 0d 03 02 |next position...| 00000b90 48 20 20 20 20 20 20 20 20 20 20 50 4c 41 20 3a |H PLA :| 00000ba0 20 54 41 59 20 20 20 20 20 20 20 20 20 20 20 20 | TAY | 00000bb0 20 20 20 20 20 20 20 20 5c 20 52 65 74 72 69 65 | \ Retrie| 00000bc0 76 65 20 68 6f 72 69 7a 20 70 6f 73 2e 20 63 6f |ve horiz pos. co| 00000bd0 75 6e 74 65 72 0d 03 0c 3a 20 20 20 20 20 20 20 |unter...: | 00000be0 20 20 20 49 4e 59 20 20 20 20 20 20 20 20 20 20 | INY | 00000bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000c00 5c 20 61 6e 64 20 69 6e 63 72 65 6d 65 6e 74 0d |\ and increment.| 00000c10 03 16 43 20 20 20 20 20 20 20 20 20 20 43 50 59 |..C CPY| 00000c20 20 23 34 30 20 3a 20 42 4e 45 20 4c 6f 6f 70 20 | #40 : BNE Loop | 00000c30 20 20 20 20 20 20 20 20 20 20 5c 20 4c 6f 6f 70 | \ Loop| 00000c40 20 66 6f 72 20 34 30 20 63 68 61 72 61 63 74 65 | for 40 characte| 00000c50 72 73 0d 03 20 05 20 0d 03 2a 3d 20 20 20 20 20 |rs.. . ..*= | 00000c60 20 20 20 20 20 4a 53 52 20 70 72 74 6f 6e 20 20 | JSR prton | 00000c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000c80 20 20 5c 20 54 75 72 6e 20 6f 6e 20 70 72 69 6e | \ Turn on prin| 00000c90 74 65 72 2c 0d 03 34 43 20 20 20 20 20 20 20 20 |ter,..4C | 00000ca0 20 20 4a 53 52 20 6f 73 6e 65 77 6c 20 20 20 20 | JSR osnewl | 00000cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c | \| 00000cc0 20 53 65 6e 64 20 4c 46 2f 43 52 20 74 6f 20 70 | Send LF/CR to p| 00000cd0 72 69 6e 74 65 72 2c 0d 03 3e 48 20 20 20 20 20 |rinter,..>H | 00000ce0 20 20 20 20 20 4a 53 52 20 70 72 74 6f 66 66 20 | JSR prtoff | 00000cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000d00 20 20 5c 20 61 6e 64 20 74 75 72 6e 20 6f 66 66 | \ and turn off| 00000d10 20 70 72 69 6e 74 65 72 20 61 67 61 69 6e 2e 0d | printer again..| 00000d20 03 48 50 20 20 20 20 20 20 20 20 20 20 4c 44 41 |.HP LDA| 00000d30 20 64 6f 75 62 6c 65 20 3a 20 42 45 51 20 6e 6f | double : BEQ no| 00000d40 64 6f 75 62 6c 65 73 20 20 20 5c 20 42 79 70 61 |doubles \ Bypa| 00000d50 73 73 20 69 66 20 64 6f 75 62 6c 65 20 68 65 69 |ss if double hei| 00000d60 67 68 74 20 66 6c 61 67 20 63 6c 65 61 72 2c 0d |ght flag clear,.| 00000d70 03 52 50 20 20 20 20 20 20 20 20 20 20 4a 53 52 |.RP JSR| 00000d80 20 70 72 74 6f 6e 20 3a 20 4a 53 52 20 6f 73 6e | prton : JSR osn| 00000d90 65 77 6c 20 20 20 20 20 20 20 5c 20 65 6c 73 65 |ewl \ else| 00000da0 20 73 65 6e 64 20 61 6e 6f 74 68 65 72 20 4c 46 | send another LF| 00000db0 2f 43 52 20 74 6f 20 70 72 69 6e 74 65 72 2c 0d |/CR to printer,.| 00000dc0 03 5c 4d 20 20 20 20 20 20 20 20 20 20 4a 53 52 |.\M JSR| 00000dd0 20 70 72 74 6f 66 66 20 20 20 20 20 20 20 20 20 | prtoff | 00000de0 20 20 20 20 20 20 20 20 20 20 5c 20 61 6e 64 20 | \ and | 00000df0 6d 6f 76 65 20 73 63 72 65 65 6e 20 63 75 72 73 |move screen curs| 00000e00 6f 72 20 74 6f 20 69 67 6e 6f 72 65 0d 03 66 46 |or to ignore..fF| 00000e10 20 20 20 20 20 20 20 20 20 20 4c 44 41 20 23 31 | LDA #1| 00000e20 33 20 3a 20 4a 53 52 20 6f 73 61 73 63 69 20 20 |3 : JSR osasci | 00000e30 20 20 20 20 20 20 20 5c 20 73 65 63 6f 6e 64 20 | \ second | 00000e40 64 6f 75 62 6c 65 20 68 65 69 67 68 74 20 72 6f |double height ro| 00000e50 77 2e 0d 03 70 05 20 0d 03 7a 0e 2e 6e 6f 64 6f |w...p. ..z..nodo| 00000e60 75 62 6c 65 73 0d 03 84 46 20 20 20 20 20 20 20 |ubles...F | 00000e70 20 20 20 4c 44 41 20 23 26 38 36 20 3a 20 4a 53 | LDA #&86 : JS| 00000e80 52 20 6f 73 62 79 74 65 20 20 20 20 20 20 20 20 |R osbyte | 00000e90 5c 20 52 65 61 64 20 74 65 78 74 20 63 75 72 73 |\ Read text curs| 00000ea0 6f 72 20 70 6f 73 69 74 69 6f 6e 0d 03 8e 1f 20 |or position.... | 00000eb0 20 20 20 20 20 20 20 20 20 43 50 59 20 23 32 34 | CPY #24| 00000ec0 20 3a 20 42 43 53 20 45 6e 64 0d 03 98 19 20 20 | : BCS End.... | 00000ed0 20 20 20 20 20 20 20 20 4a 4d 50 20 4e 65 77 4c | JMP NewL| 00000ee0 69 6e 65 0d 03 a2 05 20 0d 03 ac 08 2e 45 6e 64 |ine.... .....End| 00000ef0 0d 03 b6 17 20 20 20 20 20 20 20 20 20 20 4a 53 |.... JS| 00000f00 52 20 70 72 74 6f 6e 0d 03 c0 48 20 20 20 20 20 |R prton...H | 00000f10 20 20 20 20 20 4a 53 52 20 6f 73 6e 65 77 6c 20 | JSR osnewl | 00000f20 3a 20 4a 53 52 20 6f 73 6e 65 77 6c 20 20 20 20 |: JSR osnewl | 00000f30 20 20 5c 20 45 78 74 72 61 20 6c 69 6e 65 20 66 | \ Extra line f| 00000f40 65 65 64 73 20 74 6f 20 70 72 69 6e 74 65 72 0d |eeds to printer.| 00000f50 03 ca 3f 20 20 20 20 20 20 20 20 20 20 4a 53 52 |..? JSR| 00000f60 20 6f 73 6e 65 77 6c 20 3a 20 4a 53 52 20 6f 73 | osnewl : JSR os| 00000f70 6e 65 77 6c 20 20 20 20 20 20 5c 20 61 74 20 62 |newl \ at b| 00000f80 6f 74 74 6f 6d 20 6f 66 20 70 61 67 65 2e 0d 03 |ottom of page...| 00000f90 d4 47 20 20 20 20 20 20 20 20 20 20 4c 44 41 20 |.G LDA | 00000fa0 23 33 20 3a 20 4c 44 58 20 23 30 20 3a 20 4a 53 |#3 : LDX #0 : JS| 00000fb0 52 20 6f 73 62 79 74 65 20 5c 20 53 63 72 65 65 |R osbyte \ Scree| 00000fc0 6e 20 61 6e 64 20 50 72 69 6e 74 65 72 20 65 6e |n and Printer en| 00000fd0 61 62 6c 65 64 0d 03 de 45 20 20 20 20 20 20 20 |abled...E | 00000fe0 20 20 20 4c 44 41 20 23 33 20 3a 20 4a 53 52 20 | LDA #3 : JSR | 00000ff0 6f 73 77 72 63 68 20 20 20 20 20 20 20 20 20 20 |oswrch | 00001000 5c 20 46 69 6e 61 6c 6c 79 20 64 69 73 61 62 6c |\ Finally disabl| 00001010 65 20 70 72 69 6e 74 65 72 2e 0d 03 e8 3f 20 20 |e printer....? | 00001020 20 20 20 20 20 20 20 20 4c 44 58 20 26 37 30 20 | LDX &70 | 00001030 3a 20 4c 44 59 20 26 37 31 20 3a 20 4c 44 41 20 |: LDY &71 : LDA | 00001040 23 30 20 20 20 5c 20 52 65 73 74 6f 72 65 20 72 |#0 \ Restore r| 00001050 65 67 69 73 74 65 72 73 2c 0d 03 f2 35 20 20 20 |egisters,...5 | 00001060 20 20 20 20 20 20 20 52 54 53 20 20 20 20 20 20 | RTS | 00001070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001080 20 20 20 20 5c 20 61 6e 64 20 65 78 69 74 0d 03 | \ and exit..| 00001090 fc 05 20 0d 04 06 4b 2e 70 72 74 6f 6e 20 20 20 |.. ...K.prton | 000010a0 20 4c 44 41 20 23 33 20 3a 20 4c 44 58 20 23 31 | LDA #3 : LDX #1| 000010b0 30 20 3a 20 4a 4d 50 20 6f 73 62 79 74 65 5c 20 |0 : JMP osbyte\ | 000010c0 45 6e 61 62 6c 65 20 70 72 69 6e 74 65 72 2c 20 |Enable printer, | 000010d0 64 69 73 61 62 6c 65 20 73 63 72 65 65 6e 0d 04 |disable screen..| 000010e0 10 4b 2e 70 72 74 6f 66 66 20 20 20 4c 44 41 20 |.K.prtoff LDA | 000010f0 23 33 20 3a 20 4c 44 58 20 23 34 20 3a 20 4a 4d |#3 : LDX #4 : JM| 00001100 50 20 6f 73 62 79 74 65 20 5c 20 44 69 73 61 62 |P osbyte \ Disab| 00001110 6c 65 20 70 72 69 6e 74 65 72 2c 20 65 6e 61 62 |le printer, enab| 00001120 6c 65 20 73 63 72 65 65 6e 0d 04 1a 05 20 0d 04 |le screen.... ..| 00001130 24 4a 2e 76 65 63 20 20 20 20 20 20 42 52 4b 20 |$J.vec BRK | 00001140 3a 20 42 52 4b 20 20 20 20 20 20 20 20 20 20 20 |: BRK | 00001150 20 20 20 20 20 20 20 20 20 5c 20 53 74 6f 72 61 | \ Stora| 00001160 67 65 20 66 6f 72 20 6f 6c 64 20 4f 53 57 4f 52 |ge for old OSWOR| 00001170 44 20 76 65 63 74 6f 72 0d 04 2e 3a 2e 67 72 61 |D vector...:.gra| 00001180 70 68 69 63 73 20 42 52 4b 20 20 20 20 20 20 20 |phics BRK | 00001190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000011a0 20 20 20 5c 20 47 72 61 70 68 69 63 73 20 66 6c | \ Graphics fl| 000011b0 61 67 0d 04 38 3f 2e 64 6f 75 62 6c 65 20 20 20 |ag..8?.double | 000011c0 42 52 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 |BRK | 000011d0 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 20 44 | \ D| 000011e0 6f 75 62 6c 65 2d 48 65 69 67 68 74 20 66 6c 61 |ouble-Height fla| 000011f0 67 0d 04 42 05 5d 0d 04 4c 05 ed 0d 04 56 05 20 |g..B.]..L....V. | 00001200 0d 04 60 1e 2a 53 41 56 45 20 54 54 58 50 72 6e |..`.*SAVE TTXPrn| 00001210 74 20 46 46 46 46 30 41 30 30 2b 31 30 30 0d 04 |t FFFF0A00+100..| 00001220 6a 05 20 0d 04 74 4a f4 20 49 66 20 61 20 67 72 |j. ..tJ. If a gr| 00001230 61 70 68 69 63 73 20 73 63 72 65 65 6e 20 64 75 |aphics screen du| 00001240 6d 70 20 52 4f 4d 20 69 73 20 61 76 61 69 6c 61 |mp ROM is availa| 00001250 62 6c 65 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 |ble, for example| 00001260 20 50 52 49 4e 54 4d 41 53 54 45 52 2c 0d 04 7e | PRINTMASTER,..~| 00001270 3d f4 20 74 68 69 73 20 6d 61 79 20 62 65 20 63 |=. this may be c| 00001280 61 6c 6c 65 64 20 62 79 20 6d 6f 64 69 66 79 69 |alled by modifyi| 00001290 6e 67 20 74 68 65 20 70 72 6f 67 72 61 6d 20 61 |ng the program a| 000012a0 73 20 66 6f 6c 6c 6f 77 73 3a 0d 04 88 26 f4 20 |s follows:...&. | 000012b0 41 64 64 20 6c 69 6e 65 20 20 20 20 20 20 20 20 |Add line | 000012c0 39 35 20 6f 73 63 6c 69 20 3d 20 26 46 46 46 37 |95 oscli = &FFF7| 000012d0 0d 04 92 2a f4 20 44 65 6c 65 74 65 20 6c 69 6e |...*. Delete lin| 000012e0 65 73 20 20 20 33 32 30 20 74 6f 20 39 33 30 2c |es 320 to 930,| 000012f0 20 61 6e 64 20 61 64 64 20 3a 0d 04 9c 2f f4 20 | and add :.../. | 00001300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 33 | 3| 00001310 32 30 20 4c 44 58 20 23 63 6d 64 73 74 72 69 6e |20 LDX #cmdstrin| 00001320 67 20 4d 4f 44 20 32 35 36 0d 04 a6 2f f4 20 20 |g MOD 256.../. | 00001330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 33 33 | 33| 00001340 30 20 4c 44 59 20 23 63 6d 64 73 74 72 69 6e 67 |0 LDY #cmdstring| 00001350 20 44 49 56 20 32 35 36 0d 04 b0 22 f4 20 20 20 | DIV 256...". | 00001360 20 20 20 20 20 20 20 20 20 20 20 20 20 33 34 30 | 340| 00001370 20 4a 53 52 20 6f 73 63 6c 69 0d 04 ba 31 f4 20 | JSR oscli...1. | 00001380 44 65 6c 65 74 65 20 6c 69 6e 65 73 20 20 20 39 |Delete lines 9| 00001390 35 30 20 74 6f 20 39 39 30 2c 20 61 6e 64 20 31 |50 to 990, and 1| 000013a0 30 33 30 20 74 6f 20 31 30 37 30 0d 04 c4 26 f4 |030 to 1070...&.| 000013b0 20 61 6e 64 20 61 64 64 20 6c 69 6e 65 20 20 31 | and add line 1| 000013c0 30 39 30 2e 63 6d 64 73 74 72 69 6e 67 20 3a 20 |090.cmdstring : | 000013d0 5d 0d 04 ce 43 f4 20 61 6e 64 20 6c 69 6e 65 20 |]...C. and line | 000013e0 20 20 20 20 20 31 30 39 35 20 24 50 25 3d 22 47 | 1095 $P%="G| 000013f0 44 55 4d 50 22 20 20 20 28 4d 6f 64 69 66 79 20 |DUMP" (Modify | 00001400 63 6f 6d 6d 61 6e 64 20 61 73 20 72 65 71 75 69 |command as requi| 00001410 72 65 64 29 0d ff |red)..| 00001416