--- title: "PC-Draw v3.0" id: 51144 type: "computer_media" slug: "pc-draw-v3-0" url: "http://localhost/computer_media/pc-draw-v3-0/" markdown_url: "http://localhost/computer_media/pc-draw-v3-0.md" published_at: "2023-07-15T00:39:03+00:00" modified_at: "2026-03-31T21:18:26+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2019/11/PC-Draw-screen-1.png" excerpt: "A multi-component PCB artwork design system that drives parallel printer interfaces to produce photo-ready circuit board negatives, with configurable driver POKEs for five interface types." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "MDM Enterprises" slug: "mdm-enterprises" taxonomy: "post_tag" url: "http://localhost/tag/mdm-enterprises/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" indiv: - name: "Duane Malburg" slug: "duane-malburg" taxonomy: "indiv" url: "http://localhost/indiv/duane-malburg/" - name: "Michael Davis" slug: "michael-davis" taxonomy: "indiv" url: "http://localhost/indiv/michael-davis/" genre: - name: "Electronics" slug: "electronics" taxonomy: "genre" url: "http://localhost/type/electronics/" media_type: "Program" programmers: - name: "Duane Malburg" slug: "duane-malburg" taxonomy: "indiv" url: "http://localhost/indiv/duane-malburg/" - name: "Michael Davis" slug: "michael-davis" taxonomy: "indiv" url: "http://localhost/indiv/michael-davis/" download_url: "https://archive.org/download/timex-sinclair-software-archive/PC-DRAW%20v3.0%20%281987%29%28MDM%20Enterprises%29%28US%29%28TS2068%29%28Program%29.zip" mediadate: "1987" producer_company: - id: 48832 title: "MDM Enterprises" type: "company" url: "http://localhost/company/mdm-enterprises/" images: - url: "http://localhost/wp-content/uploads/2019/11/PC-Draw-screen-1.png" - url: "http://localhost/wp-content/uploads/2019/11/PC-Draw-screen-2.png" - url: "http://localhost/wp-content/uploads/2019/11/MDM-Enterprises-PC-Draw-side-A.jpg" - url: "http://localhost/wp-content/uploads/2019/11/MDM-Enterprises-PC-Draw-box-front.jpg" article_media: - id: 42155 title: "PC-Draw Review" type: "article" url: "http://localhost/article/pc-draw-review/" - id: 15367 title: "For Your Sinclair: New Releases" type: "article" url: "http://localhost/article/for-your-sinclair-new-releases-2/" - id: 15398 title: "New Items" type: "article" url: "http://localhost/article/new-items-2/" related_products: - id: 20311 title: "PC-DRAW" type: "product" url: "http://localhost/product/pc-draw/" media_type_tags: "Electronics" --- # PC-Draw v3.0 PC-Draw v3.0 is a printed circuit board artwork design and printing system that produces output suitable for photographic negative production and chemical etching. The package consists of multiple tape-loaded components including a screen loader, machine code block (“PC-Code”), and a BASIC driver program, with separate variants for two different hardware platforms. The printer driver configuration subsystem supports at least five parallel interface types — A&J, Tasman B, Aerco, Oliger, and a user-definable “Other” — with port addresses, busy-line polarity, strobe type (hardware or software), and bit number all configurable via POKE operations into the machine code block. Print jobs can be queued for up to six copies, each independently set for true or mirror image, quick or camera-ready quality, and grid overlay options; print parameters are passed to the machine code routine by POKEing ASCII codes of option characters into fixed addresses before calling RANDOMIZE USR. The loader component also includes a version-conversion routine that detects v2.0 file format by signature byte checks at known addresses and upgrades files in place using a machine code conversion call. *** ## Program Analysis ### Program Structure The listing contains several distinct programs that load sequentially from tape, each starting at line 10. The overall load chain is: 1. **Bootstrap loader** (lines 10–40): Sets colors, loads `PC-Scrn` as a SCREEN$, then loads `PC-Code` as a CODE block, then chains to `Draw`. 2. **Draw / tape utility** (lines 10–210): A machine code save/load utility that reads a filename from memory at address `36082`, then either saves or loads the machine code block based on a mode flag PEEKed from address `36066`. 3. **PC-Draw main program — ZX Spectrum variant** (lines 220–1370): Handles backup copy creation, printer driver configuration, and the main LOAD/PRINT/QUIT workflow. Operates with machine code at address `54344` and driver block at `arc=64445`. 4. **PC-Print — TS-2068 variant** (lines 10–1440, second occurrence): A parallel printer support package with its machine code at address `33290` and driver block at `arc=34161`. Presents a title screen identifying itself as “For TS-2068 Ver.3.0”. The entire listing appears to be a dump of both platform variants interleaved, with the bootstrap and tape utility appearing twice (once for each variant’s tape set). ### Machine Code Integration The main computational work is delegated entirely to machine code blocks loaded from tape. Key entry points and data addresses differ between the two platform variants: | Parameter | Spectrum variant | TS-2068 variant | | --- | --- | --- | | CODE load address | 54344 | 33290 | | CODE length (saved) | 11192 bytes | 1042 bytes | | RANDOMIZE USR entry | 27512 (Draw utility) / none explicit in main | 33290 | | Printer driver block base (`arc`) | 64445 | 34161 | | Printer width POKE | 62945 / 62946 | 33285 | | Date string POKE base | 64601 | 34317 | | Print options POKE base | N/A (Spectrum variant uses different flow) | 33286 | Print job parameters (mirror/true, quality, grid) are communicated to machine code in the TS-2068 variant by POKEing the ASCII codes of single-character option responses into addresses `33286`, `33287`, and `33288` (loop: `FOR f=SGN PI TO INT PI`, i.e., f=1 to 3), then invoking `RANDOMIZE USR 33290`. ### Printer Driver Configuration The printer driver is a small machine code stub at `arc` whose Z80 opcodes are patched in place by POKE statements to adapt it for different parallel interfaces. The configuration encodes port numbers, strobe polarity, and busy-bit position directly as instruction operands: - `POKE arc, b` — busy-in port number (used as operand of an `IN` instruction) - `POKE arc+7, o` — data-out port number (operand of `OUT`) - `POKE arc+11, e` — strobe port number - `POKE arc+3, 40-8*d` — busy polarity: 40 = `JR NZ` (low=busy), 32 = `JR Z` (high=busy) - `POKE arc+10, s` — strobe opcode: 211 = `OUT (n),A` software strobe; 219 = `IN A,(n)` as NOP-equivalent for hardware strobe - `POKE arc+2, c*8+71` — bit-test mask baked into a `AND n` or similar instruction (71 = `LD B,A`, with bit offset scaled by 8) - `POKE arc+12, 61+140*(s=219)` — 61 = `DEC A` for software strobe; 201 = `RET` for hardware strobe (140+61=201), effectively making the strobe output a no-op for hardware-strobe interfaces This approach allows a single machine code routine to serve multiple interface designs without requiring separate code blocks for each. ### Key BASIC Idioms and Techniques The TS-2068 variant makes extensive use of `VAL "number"` in place of numeric literals throughout GO TO, GO SUB, POKE, and expression contexts. This is a memory optimization: storing a number as a string literal in BASIC saves the 5-byte floating-point number that would otherwise be embedded inline. The same variant also uses `SGN PI` (= 1) and `NOT PI` (= 0) and `INT PI` (= 3) as compact substitutes for the corresponding integer constants. The computed GO TO idiom appears in the TS-2068 variant’s interface-detection block, where `LET z=VAL "222"` sets a base line number and branches are expressed as `GO TO z`, `GO TO z+SGN PI`, and `GO TO z-INT PI` to reach nearby lines 219, 222, and 223, saving bytes compared to literal line numbers in each branch. The `bep` variable holds the line number of the BEEP subroutine (1320), and calls such as `GO SUB bep` and `GO SUB bep+SGN PI` (= 1321) are used throughout, allowing the subroutine address to be changed in one place. ### Version Detection and File Conversion Lines 820–840 of the TS-2068 variant implement an automatic v2.0-to-v3.0 file conversion. Six bytes at fixed addresses within the just-loaded CODE block are checked against known v2.0 signature values (`PEEK 65186=255`, `PEEK 65182=62`, `PEEK 65183=150`, etc.). If all match, the program POKEs the ASCII code for ‘2’ (50) into address `33286` and calls `RANDOMIZE USR 33290` to perform the conversion in machine code, then reports “CONVERTED”. Otherwise it POKEs ‘3’ (51) to flag a v3.0 file. ### ON ERR Usage Both variants make use of `ON ERR GO TO` to trap tape verify failures. The pattern used is: set `ON ERR GO TO error_handler`, perform VERIFY, then immediately `ON ERR RESET` to cancel the trap. The error handler prints a message and INPUTs a save/ignore choice (`y$="s"` to retry, `"i"` to continue). This provides robust tape error recovery without crashing to BASIC error messages. ### Filename Recovery from Screen Lines 721–724 of the TS-2068 variant contain an unusual technique: if a file was loaded with an empty name (`a$=""` after a blank LOAD), the program attempts to reconstruct the filename by scanning screen row 2 (the LOAD header display line) using `SCREEN$(2,f)`, searching backward from column 28 for the last non-space character, then reading forward from column 7 to that column to assemble `a$`. This recovers the filename that the tape header printed on screen during loading. ### Tape Utility (Draw / Save-Load Stub) The `Draw` program (lines 10–210, appearing twice) is a self-modifying tape utility. It reads a filename string from memory starting at address `36082` by PEEKing bytes until a space (32) is found, building `n$`. A mode byte at `36066` selects save (108 = ASCII ‘l’? — actually used as a flag) or load behavior. In save mode, it determines the CODE block start address by reading the system variable at `65209`/`65210` and SAVEs from there to address 65535. In load mode it LOADs `n$CODE` and optionally patches address `37048` with `201` (Z80 RET) if the loaded block’s end address is below 37771. Lines 40 and 30 use `DELETE` to remove program lines before and after use, a self-modifying BASIC technique. ### Anomalies and Notes - Line 140 of the TS-2068 variant branches to `VAL "120"` on invalid date length, but line 120 does not exist in the listing — this would re-execute the INPUT at line 130, effectively re-prompting. This appears intentional. - Line 370 in the TS-2068 variant (the reconfigure entry point) is referenced by `GO TO VAL "370"` from line 330, but the listing jumps from line 360 directly to 380 — line 370 is absent. The GO TO at 330 would target 380 via fall-through, which is harmless in context. - The `DIM j$(3,n)` at line 890 creates a 2D string array with fixed first dimension 3 and variable second dimension `n` (copies). Each element stores a single character response, accessed as `j$(1,f)`, `j$(2,f)`, `j$(3,f)` for mirror/quality/grid options per copy. - The Spectrum variant’s interface selection at line 1160 uses the boolean expression `(l>2)` to compute port address differences between Tasman (l=2) and Aerco/Oliger (l=3,4) in a single line, avoiding separate branches. ## Source Code ``` 10 CLEAR 54000 15 INK 7: PAPER 7: BORDER 1 20 LOAD "PC-Scrn"SCREEN$ 25 PRINT AT 0,0; 30 LOAD "PC-Code"CODE 35 PRINT AT 0,0; 40 LOAD "Draw" 10 DELETE VAL "220", 20 CLEAR VAL "27499" 30 RANDOMIZE USR VAL "64615" 40 DELETE ,VAL "30" 50 LET l=VAL "36082" 60 POKE VAL "23658",NOT PI 70 IF PEEK VAL "36066"=VAL "113" THEN STOP 80 LET n$="" 90 IF PEEK l<>VAL "32" THEN LET n$=n$+CHR$ PEEK l: LET l=l+1: GO TO VAL "90" 100 IF PEEK VAL "36066"=VAL "108" THEN GO TO VAL "150" 110 LET l=PEEK VAL "65209"+VAL "256"*PEEK VAL "65210" 115 PRINT "Source = ";l,"Length = ";VAL "65536"-l 120 SAVE n$CODE l,VAL "65536"-l 130 CLS : GO SUB VAL "200" 140 VERIFY n$CODE : GO TO VAL "190" 150 CLS : PRINT : PRINT " loading **";n$;"**" 160 GO SUB VAL "210" 170 LOAD n$CODE 180 IF PEEK VAL "65207"+VAL "256"*PEEK VAL "65208"10 THEN GO TO 290 310 FOR f=1 TO LEN a$: POKE 64601+f,CODE a$(f): NEXT f 320 PRINT AT 10,9;"PRINTER WIDTH": INPUT " Printer width in chrs ? ";a 330 POKE 62946,a 340 IF a<32 OR a>136 THEN GO TO 320 350 LET l=32 360 IF l"y" THEN GO TO 380 420 PRINT ,,,," Saving 'PC-Custom'": SAVE "PC-Custom" LINE 220: PRINT ,," Saving 'PC-Code'": SAVE "PC-Code"CODE 54344,11192 430 CLS : PRINT " If error occurs, GOTO 410": PRINT AT 10,11;"VERIFYING": VERIFY "PC-Custom": VERIFY "PC-Code"CODE 440 GO TO 380 450 CLEAR 54300 460 BORDER 1: PRINT AT 7,10;"PC-DRAW 3.0": PRINT AT 9,2;"PRINTED CIRCUIT BOARD SYSTEM": PRINT AT 11,10;"LOADING CODE" 470 LOAD ""CODE 54344 480 PAPER 0: INK 7: BORDER 1: CLS 490 POKE 23658,0: POKE 23609,9 500 FOR f=1 TO 4 510 PRINT AT 10,7; FLASH 1;" Stop the tape ": BEEP .4,6: NEXT f 520 CLS : PRINT AT 9,10;"BACK-UP COPY": INPUT "Make Back-up? (y/n)";a$: CLS : IF a$<>"y" THEN GO TO 610 530 CLS : PRINT ,,,," Saving 'PC-Draw'": SAVE "PC-Draw" LINE 450: PRINT ,," Saving 'PC-Code'": SAVE "PC-Code"CODE 54344,11192 540 ON ERR GO TO 580 550 BEEP VAL ".2",VAL "4": PRINT AT VAL "10",VAL "0"; FLASH VAL "1";" Rewind to verify " 560 PAUSE 150: CLS : PRINT AT 10,11;"VERIFYING": VERIFY "": VERIFY ""CODE 570 ON ERR RESET : GO TO 610 580 ON ERR RESET : PRINT : PRINT "VERIFY was BAD",,,,"Try a new SAVE"," or IGNOR" 581 INPUT "(s/i)? ";y$ 600 IF y$="s" THEN GO TO 530 610 BORDER 1 620 GO SUB 650 630 GO TO 400 640 PAPER 7: INK 0: BORDER 1 650 REM DRIVER is SET AT 660 LET arc=64445 670 CLS : PRINT AT 10,13;"DATE": INPUT " Date (xx/xx/xx) ";a$ 680 LET x$=a$ 690 IF LEN a$>10 THEN GO TO 670 700 FOR f=1 TO LEN a$: POKE 64601+f,CODE a$(f): NEXT f 710 PRINT AT 10,9;"PRINTER WIDTH": INPUT " Printer width in chrs ? ";a 720 POKE 62946,a 730 IF a<32 OR a>136 THEN GO TO 710 740 LET l=32 750 IF l65 THEN GO TO 860 840 IF PEEK (arc+2)<>87 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>66 OR PEEK (arc+10)<>211 OR PEEK (arc+11)<>65 OR PEEK (arc+12)<>61 THEN GO TO 920 850 PRINT ,," Printer Interface set for'A&J'": GO TO 930 860 IF PEEK arc<>191 THEN GO TO 890 870 IF PEEK (arc+2)<>71 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>123 OR PEEK (arc+10)<>219 OR PEEK (arc+11)<>127 OR PEEK (arc+12)<>201 THEN GO TO 920 880 PRINT ,," Interface is set for 'Tasman B'": GO TO 930 890 IF PEEK arc<>127 THEN GO TO 920 900 IF PEEK (arc+2)<>103 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>127 OR PEEK (arc+10)<>219 OR PEEK (arc+11)<>127 OR PEEK (arc+12)<>201 THEN GO TO 920 910 PRINT ,," Interface set for Oliger/Aerco": GO TO 930 920 PRINT ,," Interface is set for 'Other'": GO TO 930 930 PRINT ,," Port no. for data out is ";: PRINT o 940 PRINT ,," Port no. for busy in is ";: PRINT b 950 IF PEEK (arc+12)=201 THEN PRINT ,," Hardware Strobe": GO TO 970 960 PRINT ,," Port no. for strobe is ";: PRINT e 970 PRINT ,," Bit number for busy in is ";: PRINT (c-71)/8 980 IF d=32 THEN LET d$="Hi" 990 IF d=40 THEN LET d$="Low" 1000 PRINT ,," Bit ";(c-71)/8;" is '";d$;"' for busy? " 1010 LET a$="on" 1020 IF PEEK (arc+12)=201 THEN LET a$="off" 1030 PRINT ,," Software strobe is '";a$;"'" 1040 GO SUB 1370: PRINT ,," Do you wish to reconfigure your Printer Driver? (Y/N) " 1050 IF INKEY$="Y" OR INKEY$="y" THEN GO TO 1090 1060 IF INKEY$="n" OR INKEY$="N" THEN RETURN 1070 IF INKEY$="" THEN GO TO 1050 1080 GO TO 1050 1090 REM ***configure printer driver-pokes to printer driver 1100 GO SUB 1340 1110 CLS : PRINT ,,,," 1 A&J",," 2 Tasman",," 3 Aerco",," 4 Oliger",," 5 Other "; 1120 INPUT " Selection please: ";l 1130 CLS : IF l<1 OR l>5 THEN GO TO 1100 1140 LET l=INT l: IF l=1 THEN LET e=65: LET b=65: LET c=2: LET d=1: LET s=211: LET o=66: GO TO 1290 1150 IF l=5 THEN GO TO 1180 1160 LET e=127: LET d=1: LET s=219: LET o=123+4*(l>2): LET b=191-64*(l>2): LET c=4*(l>2): GO SUB 1300 1170 GO TO 770 1180 GO SUB 1340 1190 PRINT ,,,," Port no. for data out? ";: INPUT o: PRINT o 1200 PRINT ,," Port no. for busy in? ";: INPUT b: PRINT b: LET e=b 1210 PRINT ,," Bit number for busy in? ";: INPUT c: PRINT c 1220 PRINT ,," Is Bit ";c,," Hi or Low for busy? (1/0) ";: INPUT d: PRINT d 1230 IF d<>0 AND d<>1 THEN GO TO 1220 1240 PRINT ,," Software strobe? (y/n) ";: INPUT a$: PRINT ;a$ 1250 IF a$="n" THEN LET s=219: GO TO 1270 1260 LET s=211: PRINT ,," Port no. for strobe? ";: INPUT e: PRINT e 1270 PRINT ,,,,,,"Are options correct? (y/n)": INPUT b$ 1280 IF b$="n" THEN GO TO 1180 1290 GO SUB 1300: GO TO 770 1300 POKE arc,b: POKE arc+7,o: POKE arc+11,e 1310 POKE arc+3,40-8*d 1320 POKE arc+10,s: POKE arc+2,c*8+71: POKE arc+12,61+140*(s=219) 1330 RETURN 1340 CLS : PRINT ,," Printer Interface Selection: " 1350 PRINT " ----------------------------": RETURN 1370 BEEP .01,.1: BEEP .01,.1: BEEP .01,.1: RETURN 10 PAPER NOT PI: INK VAL "7": BORDER SGN PI 20 CLEAR VAL "33280" 25 LET bep=VAL "1320" 30 GO SUB bep 40 PRINT AT VAL "5",VAL "13";"PC-Draw" 50 PRINT AT VAL "7",VAL "5";"Printer Support Package" 55 PRINT AT VAL "9",VAL "10";"For TS-2068" 60 PRINT AT VAL "11",VAL "12";"Ver.3.0" 70 PRINT AT VAL "13",VAL "7";"M.D.M. Enterprises" 80 PRINT AT VAL "15",VAL "13";"\*1987" 90 PRINT AT VAL "17",VAL "10";"LOADING CODE" 100 LOAD "PC-PCode"CODE 110 POKE VAL "23609",VAL "8" 130 INPUT " Date (xx/xx/xx) ";x$ 140 IF LEN x$>VAL "10" THEN GO TO VAL "120" 150 FOR f=SGN PI TO LEN x$: POKE VAL "34317"+f,CODE x$(f): NEXT f 160 INPUT " Printer width in chrs ? ";a 170 POKE VAL "33285",a 180 LET z$="(y/n)" 195 LET arc=VAL "34161": LET d=PEEK (arc+3): LET d$="Hi": LET a$="off": LET b=PEEK arc 197 LET e=PEEK (arc+11): LET c=PEEK (arc+2): LET s=PEEK (arc+10): LET o=PEEK (arc+7) 200 GO SUB bep: CLS : PRINT " Your Printer Driver is set for " 210 LET z=VAL "222" 211 PRINT ,," The Date is ";x$ 212 PRINT ,," Printer Width is ";a;" Chrs." 213 IF PEEK arc<>65 THEN GO TO VAL "216" 214 IF PEEK (arc+2)<>87 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>66 OR PEEK (arc+10)<>211 OR PEEK (arc+11)<>65 OR PEEK (arc+12)<>61 THEN GO TO z 215 PRINT ,," Printer Interface set for'A&J'": GO TO z+SGN PI 216 IF PEEK arc<>191 THEN GO TO z-INT PI 217 IF PEEK (arc+2)<>71 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>123 OR PEEK (arc+10)<>219 OR PEEK (arc+11)<>127 OR PEEK (arc+12)<>201 THEN GO TO z 218 PRINT ,," Interface is set for 'Tasman B'": GO TO z+SGN PI 219 IF PEEK arc<>127 THEN GO TO z 220 IF PEEK (arc+2)<>103 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>127 OR PEEK (arc+10)<>219 OR PEEK (arc+11)<>127 OR PEEK (arc+12)<>201 THEN GO TO z 221 PRINT ,," Interface set for Oliger/Aerco": GO TO z+SGN PI 222 PRINT ,," Interface is set for 'Other'": GO TO z+SGN PI 229 PRINT ,," Port no. for data out is ";: PRINT o 230 PRINT ,," Port no. for busy in is ";: PRINT b 235 IF PEEK (arc+12)=201 THEN PRINT ,," Hardware Strobe": GO TO 250 240 PRINT ,," Port no. for strobe is ";: PRINT e 250 PRINT ,," Bit number for busy in is ";: PRINT (c-71)/8 260 IF d=VAL "32" THEN LET d$="Hi" 270 IF d=VAL "40" THEN LET d$="Low" 280 PRINT ,," Bit ";(c-71)/8;" is '";d$;"' for busy? " 290 LET a$="on" 300 IF PEEK (arc+12)=201 THEN LET a$="off" 310 PRINT ,," Software strobe is '";a$;"'" 320 GO SUB bep+SGN PI: PRINT ,," Do you wish to reconfigure your Printer Driver? (Y/N) " 330 IF INKEY$="y" THEN GO TO VAL "370" 340 IF INKEY$="n" THEN GO TO VAL "650" 360 GO TO VAL "330" 380 GO SUB VAL "620" 390 PRINT ,,,," 1 A&J",," 2 Tasman B",," 3 Aerco",," 4 Oliger",," 5 Other "; 400 INPUT " Selection please: ";l 410 CLS : IF lVAL "5" THEN GO TO VAL "380" 420 LET l=INT l: IF l=SGN PI THEN LET e=VAL "65": LET b=e: LET c=VAL "2": LET d=SGN PI: LET s=VAL "211": LET o=e+SGN PI: GO TO VAL "570" 430 IF l=VAL "5" THEN GO TO VAL "460" 440 LET e=VAL "127": LET d=SGN PI: LET s=VAL "219": LET o=VAL "123"+4*(l>2): LET b=VAL "191"-64*(l>2): LET c=4*(l>2): GO SUB VAL "580" 450 GO TO VAL "190" 460 GO SUB VAL "620" 470 PRINT ,,,," Port no. for data out? ";: INPUT o: PRINT o 480 PRINT ,," Port no. for busy in? ";: INPUT b: PRINT b: LET e=b 490 PRINT ,," Bit number for busy in? ";: INPUT c: PRINT c 500 PRINT ,," Is Bit ";c,," Hi or Low for busy? (1/0) ";: INPUT d: PRINT d 510 IF d<>0 AND d<>1 THEN GO TO VAL "500" 520 PRINT ,," Software strobe? (y/n) ";: INPUT a$: PRINT ;a$ 530 IF a$="n" THEN LET s=VAL "219": GO TO VAL "550" 540 LET s=VAL "211": PRINT ,," Port no. for strobe? ";: INPUT e: PRINT e 550 PRINT ,,,,,,"Are options correct? ";z$: INPUT b$ 560 IF b$="n" THEN GO TO VAL "460" 570 GO SUB VAL "580": GO TO VAL "190" 580 POKE arc,b: POKE arc+7,o: POKE arc+11,e 590 POKE arc+3,40-8*d 600 POKE arc+10,s: POKE arc+2,c*8+71: POKE arc+12,61+140*(s=219) 610 RETURN 620 CLS : PRINT ,," Printer Interface Selection: " 630 PRINT " ----------------------------": RETURN 640 GO TO VAL "190" 650 INPUT "Save Customized Copy? (y/n)";a$: IF a$<>"y" THEN GO TO VAL "680" 660 CLS : PRINT ,,,," Saving 'PC-Print'": SAVE "PC-Print" LINE 10: PRINT ,," Saving 'PC-PCode'": SAVE "PC-PCode"CODE 33290,1042 667 ON ERR GO TO VAL "670" 668 BEEP VAL ".2",VAL "4": PRINT AT VAL "10",NOT PI;" Rewind to Verify ": VERIFY "": VERIFY ""CODE 669 ON ERR RESET : GO TO VAL "680" 670 GO SUB VAL "1400" 673 IF y$="s" THEN GO TO VAL "660" 680 DELETE ,110 685 GO SUB VAL "690": GO TO VAL "857" 690 GO SUB bep: INPUT "Name of File to be Loaded";a$: PRINT a$ 700 ON ERR GO TO VAL "740" 710 LOAD a$CODE 720 ON ERR RESET 721 IF a$<>"" THEN GO TO VAL "800" 722 FOR f=VAL "28" TO VAL "5" STEP -1 723 IF SCREEN$ (2,f)=" " THEN NEXT f 724 FOR j=VAL "7" TO f: LET a$=a$+SCREEN$ (2,j): NEXT j 730 GO TO VAL "800" 740 GO SUB bep: PRINT " Load of "; PAPER 2;a$; PAPER 0;" was BAD ": PRINT " Do you wish to try again ";z$ 750 ON ERR RESET 760 IF INKEY$="y" THEN GO TO VAL "690" 770 IF INKEY$="n" THEN GO TO VAL "1200" 790 GO TO VAL "760" 810 GO SUB bep: PRINT " Load of "; PAPER VAL "2";a$; PAPER NOT PI;" was GOOD" 820 IF PEEK 65187<>VAL "20" AND PEEK 65188<>VAL "20" AND PEEK 65186<>VAL "255" AND PEEK 65189<>VAL "0" AND PEEK 65182<>VAL "62" AND PEEK 65183<>VAL "150" THEN GO TO VAL "850" 830 PRINT : PRINT : PRINT PAPER VAL "2";a$; PAPER NOT PI;" was a Version 2.0 file" 840 POKE 33286,VAL "50": RANDOMIZE USR 33290: PRINT : PRINT : PRINT " CONVERTED" 850 PRINT : PRINT PAPER VAL "2";a$; PAPER NOT PI;" is a Version 3.0 file": POKE 33286,VAL "51" 852 INPUT "DO YOU WISH TO SAVE (y/n)? ";y$ 853 IF y$="y" THEN GO SUB VAL "1340" 855 RETURN 857 GO SUB bep+SGN PI: INPUT "LOAD, PRINT, QUIT (l/p/q)? ";y$ 858 IF y$="q" THEN GO TO VAL "1250" 859 IF y$="l" THEN GO TO VAL "685" 860 CLS : PRINT " No. of Copies to be printed": PRINT ,," (1 to 6)? "; 870 INPUT n: PRINT n 880 LET n=INT n: IF nVAL "6" THEN GO TO VAL "860" 890 DIM j$(3,n) 900 FOR f=SGN PI TO n 910 PRINT ,," No.";f;" Copy of "; PAPER VAL "2";a$; PAPER NOT PI 920 PRINT : PRINT ,," True or Mirror image (t/m)? "; 930 INPUT j$(1,f): PRINT j$(1,f) 940 PRINT ,," Quick or Camera-Ready (q/c)?"; 950 INPUT j$(2,f): PRINT j$(2,f) 960 PRINT ,," Grid or No Grid (g/n)? "; 970 INPUT j$(3,f): PRINT j$(3,f) 980 PRINT ,,,,"No.";f;" Copy of "; PAPER VAL "2";a$; PAPER NOT PI;" OK? ";z$;: INPUT n$ 990 CLS : IF n$<>"y" THEN GO TO VAL "910" 995 NEXT f 1000 GO SUB bep+SGN PI: PRINT ,," File is now ready to be Printed": PAUSE VAL "50" 1010 GO SUB bep+SGN PI: PRINT ,," Set your Printer and press any key" 1027 PAUSE NOT PI 1030 FOR j=SGN PI TO n 1040 FOR f=SGN PI TO INT PI: POKE 33286+f,CODE j$(f,j): NEXT f 1050 PAUSE VAL "40" 1052 FOR k=SGN PI TO LEN a$: POKE 34330+k,CODE a$(k): NEXT k 1054 POKE VAL "34330"+k,VAL "255" 1060 GO SUB bep: PRINT ,,,," PRINTING FILE " 1070 RANDOMIZE USR 33290 1080 NEXT j 1090 GO SUB bep: PRINT " Printout complete": PAUSE VAL "50" 1100 GO SUB VAL "852": GO TO VAL "857" 1250 GO SUB bep: PRINT ,," Do you wish to Load another Program ";z$ 1260 IF INKEY$="n" THEN STOP 1280 IF INKEY$="" THEN GO TO VAL "1260" 1300 CLEAR 65369: INPUT "Program Name?";c$ 1310 LOAD c$ 1320 CLS 1330 POKE 23658,NOT PI: BEEP VAL ".01",VAL ".1": BEEP VAL ".01",VAL ".1": BEEP VAL ".01",VAL ".1": RETURN 1340 LET l=PEEK 65209+256*PEEK 65210 1350 INPUT "File Name? ";a$ 1360 SAVE a$CODE l,65536-l: CLS 1365 GO SUB VAL "1390" 1368 ON ERR GO TO VAL "1375" 1370 VERIFY a$CODE 1371 ON ERR RESET : RETURN 1375 GO SUB VAL "1400" 1377 IF y$="s" OR y$="S" THEN GO TO VAL "1350" 1380 GO TO VAL "1371" 1390 BEEP VAL ".2",VAL "4": PRINT AT VAL "10",NOT PI;" Rewind to Verify ": RETURN 1400 ON ERR RESET 1410 PRINT : PRINT "VERIFY was bad",,"Do a new SAVE or","Ignore? (s/i)" 1420 INPUT y$ 1440 RETURN 10 CLEAR 54000 15 INK 7: PAPER 7: BORDER 1 20 LOAD "PC-Scrn"SCREEN$ 25 PRINT AT 0,0; 30 LOAD "PC-Code"CODE 35 PRINT AT 0,0; 40 LOAD "Draw" 10 DELETE VAL "220", 20 CLEAR VAL "27499" 30 RANDOMIZE USR VAL "64615" 40 DELETE ,VAL "30" 50 LET l=VAL "36082" 60 POKE VAL "23658",NOT PI 70 IF PEEK VAL "36066"=VAL "113" THEN STOP 80 LET n$="" 90 IF PEEK l<>VAL "32" THEN LET n$=n$+CHR$ PEEK l: LET l=l+1: GO TO VAL "90" 100 IF PEEK VAL "36066"=VAL "108" THEN GO TO VAL "150" 110 LET l=PEEK VAL "65209"+VAL "256"*PEEK VAL "65210" 115 PRINT "Source = ";l,"Length = ";VAL "65536"-l 120 SAVE n$CODE l,VAL "65536"-l 130 CLS : GO SUB VAL "200" 140 VERIFY n$CODE : GO TO VAL "190" 150 CLS : PRINT : PRINT " loading **";n$;"**" 160 GO SUB VAL "210" 170 LOAD n$CODE 180 IF PEEK VAL "65207"+VAL "256"*PEEK VAL "65208"10 THEN GO TO 290 310 FOR f=1 TO LEN a$: POKE 64601+f,CODE a$(f): NEXT f 320 PRINT AT 10,9;"PRINTER WIDTH": INPUT " Printer width in chrs ? ";a 330 POKE 62946,a 340 IF a<32 OR a>136 THEN GO TO 320 350 LET l=32 360 IF l"y" THEN GO TO 380 420 PRINT ,,,," Saving 'PC-Custom'": SAVE "PC-Custom" LINE 220: PRINT ,," Saving 'PC-Code'": SAVE "PC-Code"CODE 54344,11192 430 CLS : PRINT " If error occurs, GOTO 410": PRINT AT 10,11;"VERIFYING": VERIFY "PC-Custom": VERIFY "PC-Code"CODE 440 GO TO 380 450 CLEAR 54300 460 BORDER 1: PRINT AT 7,10;"PC-DRAW 3.0": PRINT AT 9,2;"PRINTED CIRCUIT BOARD SYSTEM": PRINT AT 11,10;"LOADING CODE" 470 LOAD ""CODE 54344 480 PAPER 0: INK 7: BORDER 1: CLS 490 POKE 23658,0: POKE 23609,9 500 FOR f=1 TO 4 510 PRINT AT 10,7; FLASH 1;" Stop the tape ": BEEP .4,6: NEXT f 520 CLS : PRINT AT 9,10;"BACK-UP COPY": INPUT "Make Back-up? (y/n)";a$: CLS : IF a$<>"y" THEN GO TO 610 530 CLS : PRINT ,,,," Saving 'PC-Draw'": SAVE "PC-Draw" LINE 450: PRINT ,," Saving 'PC-Code'": SAVE "PC-Code"CODE 54344,11192 540 ON ERR GO TO 580 550 BEEP VAL ".2",VAL "4": PRINT AT VAL "10",VAL "0"; FLASH VAL "1";" Rewind to verify " 560 PAUSE 150: CLS : PRINT AT 10,11;"VERIFYING": VERIFY "": VERIFY ""CODE 570 ON ERR RESET : GO TO 610 580 ON ERR RESET : PRINT : PRINT "VERIFY was BAD",,,,"Try a new SAVE"," or IGNOR" 581 INPUT "(s/i)? ";y$ 600 IF y$="s" THEN GO TO 530 610 BORDER 1 620 GO SUB 650 630 GO TO 400 640 PAPER 7: INK 0: BORDER 1 650 REM DRIVER is SET AT 660 LET arc=64445 670 CLS : PRINT AT 10,13;"DATE": INPUT " Date (xx/xx/xx) ";a$ 680 LET x$=a$ 690 IF LEN a$>10 THEN GO TO 670 700 FOR f=1 TO LEN a$: POKE 64601+f,CODE a$(f): NEXT f 710 PRINT AT 10,9;"PRINTER WIDTH": INPUT " Printer width in chrs ? ";a 720 POKE 62946,a 730 IF a<32 OR a>136 THEN GO TO 710 740 LET l=32 750 IF l65 THEN GO TO 860 840 IF PEEK (arc+2)<>87 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>66 OR PEEK (arc+10)<>211 OR PEEK (arc+11)<>65 OR PEEK (arc+12)<>61 THEN GO TO 920 850 PRINT ,," Printer Interface set for'A&J'": GO TO 930 860 IF PEEK arc<>191 THEN GO TO 890 870 IF PEEK (arc+2)<>71 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>123 OR PEEK (arc+10)<>219 OR PEEK (arc+11)<>127 OR PEEK (arc+12)<>201 THEN GO TO 920 880 PRINT ,," Interface is set for 'Tasman B'": GO TO 930 890 IF PEEK arc<>127 THEN GO TO 920 900 IF PEEK (arc+2)<>103 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>127 OR PEEK (arc+10)<>219 OR PEEK (arc+11)<>127 OR PEEK (arc+12)<>201 THEN GO TO 920 910 PRINT ,," Interface set for Oliger/Aerco": GO TO 930 920 PRINT ,," Interface is set for 'Other'": GO TO 930 930 PRINT ,," Port no. for data out is ";: PRINT o 940 PRINT ,," Port no. for busy in is ";: PRINT b 950 IF PEEK (arc+12)=201 THEN PRINT ,," Hardware Strobe": GO TO 970 960 PRINT ,," Port no. for strobe is ";: PRINT e 970 PRINT ,," Bit number for busy in is ";: PRINT (c-71)/8 980 IF d=32 THEN LET d$="Hi" 990 IF d=40 THEN LET d$="Low" 1000 PRINT ,," Bit ";(c-71)/8;" is '";d$;"' for busy? " 1010 LET a$="on" 1020 IF PEEK (arc+12)=201 THEN LET a$="off" 1030 PRINT ,," Software strobe is '";a$;"'" 1040 GO SUB 1370: PRINT ,," Do you wish to reconfigure your Printer Driver? (Y/N) " 1050 IF INKEY$="Y" OR INKEY$="y" THEN GO TO 1090 1060 IF INKEY$="n" OR INKEY$="N" THEN RETURN 1070 IF INKEY$="" THEN GO TO 1050 1080 GO TO 1050 1090 REM ***configure printer driver-pokes to printer driver 1100 GO SUB 1340 1110 CLS : PRINT ,,,," 1 A&J",," 2 Tasman",," 3 Aerco",," 4 Oliger",," 5 Other "; 1120 INPUT " Selection please: ";l 1130 CLS : IF l<1 OR l>5 THEN GO TO 1100 1140 LET l=INT l: IF l=1 THEN LET e=65: LET b=65: LET c=2: LET d=1: LET s=211: LET o=66: GO TO 1290 1150 IF l=5 THEN GO TO 1180 1160 LET e=127: LET d=1: LET s=219: LET o=123+4*(l>2): LET b=191-64*(l>2): LET c=4*(l>2): GO SUB 1300 1170 GO TO 770 1180 GO SUB 1340 1190 PRINT ,,,," Port no. for data out? ";: INPUT o: PRINT o 1200 PRINT ,," Port no. for busy in? ";: INPUT b: PRINT b: LET e=b 1210 PRINT ,," Bit number for busy in? ";: INPUT c: PRINT c 1220 PRINT ,," Is Bit ";c,," Hi or Low for busy? (1/0) ";: INPUT d: PRINT d 1230 IF d<>0 AND d<>1 THEN GO TO 1220 1240 PRINT ,," Software strobe? (y/n) ";: INPUT a$: PRINT ;a$ 1250 IF a$="n" THEN LET s=219: GO TO 1270 1260 LET s=211: PRINT ,," Port no. for strobe? ";: INPUT e: PRINT e 1270 PRINT ,,,,,,"Are options correct? (y/n)": INPUT b$ 1280 IF b$="n" THEN GO TO 1180 1290 GO SUB 1300: GO TO 770 1300 POKE arc,b: POKE arc+7,o: POKE arc+11,e 1310 POKE arc+3,40-8*d 1320 POKE arc+10,s: POKE arc+2,c*8+71: POKE arc+12,61+140*(s=219) 1330 RETURN 1340 CLS : PRINT ,," Printer Interface Selection: " 1350 PRINT " ----------------------------": RETURN 1370 BEEP .01,.1: BEEP .01,.1: BEEP .01,.1: RETURN 10 PAPER NOT PI: INK VAL "7": BORDER SGN PI 20 CLEAR VAL "33280" 25 LET bep=VAL "1320" 30 GO SUB bep 40 PRINT AT VAL "5",VAL "13";"PC-Draw" 50 PRINT AT VAL "7",VAL "5";"Printer Support Package" 55 PRINT AT VAL "9",VAL "10";"For TS-2068" 60 PRINT AT VAL "11",VAL "12";"Ver.3.0" 70 PRINT AT VAL "13",VAL "7";"M.D.M. Enterprises" 80 PRINT AT VAL "15",VAL "13";"\*1987" 90 PRINT AT VAL "17",VAL "10";"LOADING CODE" 100 LOAD "PC-PCode"CODE 110 POKE VAL "23609",VAL "8" 130 INPUT " Date (xx/xx/xx) ";x$ 140 IF LEN x$>VAL "10" THEN GO TO VAL "120" 150 FOR f=SGN PI TO LEN x$: POKE VAL "34317"+f,CODE x$(f): NEXT f 160 INPUT " Printer width in chrs ? ";a 170 POKE VAL "33285",a 180 LET z$="(y/n)" 195 LET arc=VAL "34161": LET d=PEEK (arc+3): LET d$="Hi": LET a$="off": LET b=PEEK arc 197 LET e=PEEK (arc+11): LET c=PEEK (arc+2): LET s=PEEK (arc+10): LET o=PEEK (arc+7) 200 GO SUB bep: CLS : PRINT " Your Printer Driver is set for " 210 LET z=VAL "222" 211 PRINT ,," The Date is ";x$ 212 PRINT ,," Printer Width is ";a;" Chrs." 213 IF PEEK arc<>65 THEN GO TO VAL "216" 214 IF PEEK (arc+2)<>87 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>66 OR PEEK (arc+10)<>211 OR PEEK (arc+11)<>65 OR PEEK (arc+12)<>61 THEN GO TO z 215 PRINT ,," Printer Interface set for'A&J'": GO TO z+SGN PI 216 IF PEEK arc<>191 THEN GO TO z-INT PI 217 IF PEEK (arc+2)<>71 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>123 OR PEEK (arc+10)<>219 OR PEEK (arc+11)<>127 OR PEEK (arc+12)<>201 THEN GO TO z 218 PRINT ,," Interface is set for 'Tasman B'": GO TO z+SGN PI 219 IF PEEK arc<>127 THEN GO TO z 220 IF PEEK (arc+2)<>103 OR PEEK (arc+3)<>32 OR PEEK (arc+7)<>127 OR PEEK (arc+10)<>219 OR PEEK (arc+11)<>127 OR PEEK (arc+12)<>201 THEN GO TO z 221 PRINT ,," Interface set for Oliger/Aerco": GO TO z+SGN PI 222 PRINT ,," Interface is set for 'Other'": GO TO z+SGN PI 229 PRINT ,," Port no. for data out is ";: PRINT o 230 PRINT ,," Port no. for busy in is ";: PRINT b 235 IF PEEK (arc+12)=201 THEN PRINT ,," Hardware Strobe": GO TO 250 240 PRINT ,," Port no. for strobe is ";: PRINT e 250 PRINT ,," Bit number for busy in is ";: PRINT (c-71)/8 260 IF d=VAL "32" THEN LET d$="Hi" 270 IF d=VAL "40" THEN LET d$="Low" 280 PRINT ,," Bit ";(c-71)/8;" is '";d$;"' for busy? " 290 LET a$="on" 300 IF PEEK (arc+12)=201 THEN LET a$="off" 310 PRINT ,," Software strobe is '";a$;"'" 320 GO SUB bep+SGN PI: PRINT ,," Do you wish to reconfigure your Printer Driver? (Y/N) " 330 IF INKEY$="y" THEN GO TO VAL "370" 340 IF INKEY$="n" THEN GO TO VAL "650" 360 GO TO VAL "330" 380 GO SUB VAL "620" 390 PRINT ,,,," 1 A&J",," 2 Tasman B",," 3 Aerco",," 4 Oliger",," 5 Other "; 400 INPUT " Selection please: ";l 410 CLS : IF lVAL "5" THEN GO TO VAL "380" 420 LET l=INT l: IF l=SGN PI THEN LET e=VAL "65": LET b=e: LET c=VAL "2": LET d=SGN PI: LET s=VAL "211": LET o=e+SGN PI: GO TO VAL "570" 430 IF l=VAL "5" THEN GO TO VAL "460" 440 LET e=VAL "127": LET d=SGN PI: LET s=VAL "219": LET o=VAL "123"+4*(l>2): LET b=VAL "191"-64*(l>2): LET c=4*(l>2): GO SUB VAL "580" 450 GO TO VAL "190" 460 GO SUB VAL "620" 470 PRINT ,,,," Port no. for data out? ";: INPUT o: PRINT o 480 PRINT ,," Port no. for busy in? ";: INPUT b: PRINT b: LET e=b 490 PRINT ,," Bit number for busy in? ";: INPUT c: PRINT c 500 PRINT ,," Is Bit ";c,," Hi or Low for busy? (1/0) ";: INPUT d: PRINT d 510 IF d<>0 AND d<>1 THEN GO TO VAL "500" 520 PRINT ,," Software strobe? (y/n) ";: INPUT a$: PRINT ;a$ 530 IF a$="n" THEN LET s=VAL "219": GO TO VAL "550" 540 LET s=VAL "211": PRINT ,," Port no. for strobe? ";: INPUT e: PRINT e 550 PRINT ,,,,,,"Are options correct? ";z$: INPUT b$ 560 IF b$="n" THEN GO TO VAL "460" 570 GO SUB VAL "580": GO TO VAL "190" 580 POKE arc,b: POKE arc+7,o: POKE arc+11,e 590 POKE arc+3,40-8*d 600 POKE arc+10,s: POKE arc+2,c*8+71: POKE arc+12,61+140*(s=219) 610 RETURN 620 CLS : PRINT ,," Printer Interface Selection: " 630 PRINT " ----------------------------": RETURN 640 GO TO VAL "190" 650 INPUT "Save Customized Copy? (y/n)";a$: IF a$<>"y" THEN GO TO VAL "680" 660 CLS : PRINT ,,,," Saving 'PC-Print'": SAVE "PC-Print" LINE 10: PRINT ,," Saving 'PC-PCode'": SAVE "PC-PCode"CODE 33290,1042 667 ON ERR GO TO VAL "670" 668 BEEP VAL ".2",VAL "4": PRINT AT VAL "10",NOT PI;" Rewind to Verify ": VERIFY "": VERIFY ""CODE 669 ON ERR RESET : GO TO VAL "680" 670 GO SUB VAL "1400" 673 IF y$="s" THEN GO TO VAL "660" 680 DELETE ,110 685 GO SUB VAL "690": GO TO VAL "857" 690 GO SUB bep: INPUT "Name of File to be Loaded";a$: PRINT a$ 700 ON ERR GO TO VAL "740" 710 LOAD a$CODE 720 ON ERR RESET 721 IF a$<>"" THEN GO TO VAL "800" 722 FOR f=VAL "28" TO VAL "5" STEP -1 723 IF SCREEN$ (2,f)=" " THEN NEXT f 724 FOR j=VAL "7" TO f: LET a$=a$+SCREEN$ (2,j): NEXT j 730 GO TO VAL "800" 740 GO SUB bep: PRINT " Load of "; PAPER 2;a$; PAPER 0;" was BAD ": PRINT " Do you wish to try again ";z$ 750 ON ERR RESET 760 IF INKEY$="y" THEN GO TO VAL "690" 770 IF INKEY$="n" THEN GO TO VAL "1200" 790 GO TO VAL "760" 810 GO SUB bep: PRINT " Load of "; PAPER VAL "2";a$; PAPER NOT PI;" was GOOD" 820 IF PEEK 65187<>VAL "20" AND PEEK 65188<>VAL "20" AND PEEK 65186<>VAL "255" AND PEEK 65189<>VAL "0" AND PEEK 65182<>VAL "62" AND PEEK 65183<>VAL "150" THEN GO TO VAL "850" 830 PRINT : PRINT : PRINT PAPER VAL "2";a$; PAPER NOT PI;" was a Version 2.0 file" 840 POKE 33286,VAL "50": RANDOMIZE USR 33290: PRINT : PRINT : PRINT " CONVERTED" 850 PRINT : PRINT PAPER VAL "2";a$; PAPER NOT PI;" is a Version 3.0 file": POKE 33286,VAL "51" 852 INPUT "DO YOU WISH TO SAVE (y/n)? ";y$ 853 IF y$="y" THEN GO SUB VAL "1340" 855 RETURN 857 GO SUB bep+SGN PI: INPUT "LOAD, PRINT, QUIT (l/p/q)? ";y$ 858 IF y$="q" THEN GO TO VAL "1250" 859 IF y$="l" THEN GO TO VAL "685" 860 CLS : PRINT " No. of Copies to be printed": PRINT ,," (1 to 6)? "; 870 INPUT n: PRINT n 880 LET n=INT n: IF nVAL "6" THEN GO TO VAL "860" 890 DIM j$(3,n) 900 FOR f=SGN PI TO n 910 PRINT ,," No.";f;" Copy of "; PAPER VAL "2";a$; PAPER NOT PI 920 PRINT : PRINT ,," True or Mirror image (t/m)? "; 930 INPUT j$(1,f): PRINT j$(1,f) 940 PRINT ,," Quick or Camera-Ready (q/c)?"; 950 INPUT j$(2,f): PRINT j$(2,f) 960 PRINT ,," Grid or No Grid (g/n)? "; 970 INPUT j$(3,f): PRINT j$(3,f) 980 PRINT ,,,,"No.";f;" Copy of "; PAPER VAL "2";a$; PAPER NOT PI;" OK? ";z$;: INPUT n$ 990 CLS : IF n$<>"y" THEN GO TO VAL "910" 995 NEXT f 1000 GO SUB bep+SGN PI: PRINT ,," File is now ready to be Printed": PAUSE VAL "50" 1010 GO SUB bep+SGN PI: PRINT ,," Set your Printer and press any key" 1027 PAUSE NOT PI 1030 FOR j=SGN PI TO n 1040 FOR f=SGN PI TO INT PI: POKE 33286+f,CODE j$(f,j): NEXT f 1050 PAUSE VAL "40" 1052 FOR k=SGN PI TO LEN a$: POKE 34330+k,CODE a$(k): NEXT k 1054 POKE VAL "34330"+k,VAL "255" 1060 GO SUB bep: PRINT ,,,," PRINTING FILE " 1070 RANDOMIZE USR 33290 1080 NEXT j 1090 GO SUB bep: PRINT " Printout complete": PAUSE VAL "50" 1100 GO SUB VAL "852": GO TO VAL "857" 1250 GO SUB bep: PRINT ,," Do you wish to Load another Program ";z$ 1260 IF INKEY$="n" THEN STOP 1280 IF INKEY$="" THEN GO TO VAL "1260" 1300 CLEAR 65369: INPUT "Program Name?";c$ 1310 LOAD c$ 1320 CLS 1330 POKE 23658,NOT PI: BEEP VAL ".01",VAL ".1": BEEP VAL ".01",VAL ".1": BEEP VAL ".01",VAL ".1": RETURN 1340 LET l=PEEK 65209+256*PEEK 65210 1350 INPUT "File Name? ";a$ 1360 SAVE a$CODE l,65536-l: CLS 1365 GO SUB VAL "1390" 1368 ON ERR GO TO VAL "1375" 1370 VERIFY a$CODE 1371 ON ERR RESET : RETURN 1375 GO SUB VAL "1400" 1377 IF y$="s" OR y$="S" THEN GO TO VAL "1350" 1380 GO TO VAL "1371" 1390 BEEP VAL ".2",VAL "4": PRINT AT VAL "10",NOT PI;" Rewind to Verify ": RETURN 1400 ON ERR RESET 1410 PRINT : PRINT "VERIFY was bad",,"Do a new SAVE or","Ignore? (s/i)" 1420 INPUT y$ 1440 RETURN ```