--- title: "Software Review: Pix Fix by John T. Nguyen" type: "article" slug: "software-review-pix-fix-by-john-t-nguyen" url: "http://localhost/article/software-review-pix-fix-by-john-t-nguyen/" markdown_url: "http://localhost/article/software-review-pix-fix-by-john-t-nguyen.md" published_at: "2021-01-05T21:15:03+00:00" modified_at: "2024-05-26T13:13:17+00:00" featured_image: url: "http://localhost/wp-content/uploads/2022/04/20230809-041332.jpg" excerpt: "Review of the image editing/creation program for the TS 2068." category: - name: "SWYM" slug: "swym" taxonomy: "category" url: "http://localhost/category/periodicals/swym/" post_tag: - name: "Software review" slug: "software-review" taxonomy: "post_tag" url: "http://localhost/tag/software-review/" - 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: "Chuck Kereluck" slug: "chuck-kereluck" taxonomy: "indiv" url: "http://localhost/indiv/chuck-kereluck/" - name: "John T. Nguyen" slug: "john-t-nguyen" taxonomy: "indiv" url: "http://localhost/indiv/john-t-nguyen/" publication: "SWYM" publication_r: id: 35516 title: "SWYM" type: "periodical" url: "http://localhost/periodical/swym/" authors: "Chuck Kereluck" volume: "5" issue: "9" issues_articles: - id: 39576 title: "SWYM v5 n9 Sep 1990" type: "issue" url: "http://localhost/issue/swym-v5-n9-sep-1990/" pages: "7-8" pubdate: "September 1990" archive_link: false volumeissue: "v5n9" article_media: - id: 64593 title: "Pix Fix" type: "computer_media" url: "http://localhost/computer_media/pix-fix/" --- # Software Review: Pix Fix by John T. Nguyen Review of the image editing/creation program for the TS 2068. ## Source Code: Pix Fix ``` 5 REM ______________________ \c \h \c \f PIX FIX \e \h \c \h \c BY John T. Nguyen \h \c 1000 Phillips Lane \h \c Louisville,KY 40213 \h \c (502) 368 - 7051 \h \c______________________\h 10 LET ST=1: GO TO 3015 40 POKE 23658,0: POKE 37295,1: LET A=8: RANDOMIZE USR 37334: POKE 23624,56: RETURN 50 POKE 37062,SR: REM ROW/PIX 55 POKE 37066,SC: REM COL/PIX 60 RANDOMIZE USR 37061 70 IF NOT PR THEN GO TO 114 113 INPUT "": PRINT #0;" ROW: ";SR+GR;" COLUMN: ";SC+GC 114 POKE (22528+32*GR+GC),36 115 REM 116 REM --- BIG PIX MODE --- 117 LET K$=INKEY$: IF K$="" THEN GO TO 117 118 POKE (22528+32*GR+GC),56 120 GO SUB 390 127 IF K$<"a" THEN GO TO 50 130 IF K$="d" THEN LET FL=0: BORDER 7 132 IF K$="s" THEN LET FL=17: BORDER 5 134 IF K$="a" THEN LET FL=14: BORDER 0 135 IF K$="p" THEN LET PR=1*(PR=0): BEEP .1,10: BEEP .1,15: INPUT "": IF NOT PR THEN RANDOMIZE USR 37334: GO TO 50 140 IF K$="u" THEN GO TO 300 150 IF K$="i" THEN LET GR=GR-1: IF GR<0 THEN LET GR=23 160 IF K$="j" THEN LET GC=GC-1: IF GC<0 THEN LET GC=31 170 IF K$="k" THEN LET GR=GR+1: IF GR>23 THEN LET GR=0 180 IF K$="l" THEN LET GC=GC+1: IF GC>31 THEN LET GC=0 185 IF K$="o" THEN RANDOMIZE USR 37237: GO TO 50 186 IF K$="m" THEN GO SUB 40: GO TO 800 187 IF K$="h" THEN GO SUB 40: GO TO 849 190 IF NOT FL THEN GO TO 70 200 POKE 36972,FL: POKE 37150,(SC+GC): POKE 37151,(SR+GR): RANDOMIZE USR 37149 210 POKE 37164,GC: POKE 37165,GR: RANDOMIZE USR 37163 215 IF GC<4 AND GR<3 THEN GO TO 70 220 POKE 37174,(GC*8): POKE 37175,(GR*8): POKE 37177,133+8*(FL=17): RANDOMIZE USR 37173: GO TO 70 290 REM --- SCREEN MODE --- 300 RANDOMIZE USR 37183: POKE 36972,21: GO SUB 314 301 LET K$=INKEY$: IF K$="" THEN GO TO 301 302 IF K$="u" THEN GO SUB 40: GO TO 50 303 IF K$="o" THEN RANDOMIZE USR 37237: GO TO 300 304 IF K$="p" THEN GO SUB 314: COPY : GO SUB 314 305 IF K$="m" THEN GO TO 820 306 IF K$="y" THEN RANDOMIZE USR 37415: GO TO 301 307 IF K$="h" THEN GO SUB 40: GO TO 849 308 IF K$<"a" THEN LET A=8: GO TO 311 309 LET K$=CHR$ (CODE K$-32): LET A=1 311 GO SUB 314: GO SUB 390: GO SUB 314: GO TO 301 312 REM 313 REM --- BOX ROUTINE --- 314 LET BC=SC-1: LET BR=SR-1: LET EC=SC+32: LET ER=SR+24 315 IF BC<0 OR EC>255 THEN POKE 37196,33: GO TO 330 320 POKE 37196,34 330 IF BC<0 THEN POKE 37198,0: GO TO 340 335 POKE 37198,BC 340 IF BR>=0 THEN POKE 37199,BR: RANDOMIZE USR 37195 345 IF ER<=255 THEN POKE 37199,ER: RANDOMIZE USR 37195 350 IF BR<0 OR ER>191 THEN POKE 37217,25: GO TO 360 355 POKE 37217,26 360 IF BR<0 THEN POKE 37220,0: GO TO 370 365 POKE 37220,BR 370 IF EC<=255 THEN POKE 37219,EC: RANDOMIZE USR 37216 375 IF BC>=0 THEN POKE 37219,BC: RANDOMIZE USR 37216 380 RETURN 388 REM --- GET KEY --- 390 IF K$="I" THEN LET SR=SR-A: IF SR<0 THEN BEEP .1,8: LET SR=0 395 IF K$="J" THEN LET SC=SC-A: IF SC<0 THEN BEEP .1,8: LET SC=0 400 IF K$="K" THEN LET SR=SR+A: IF SR>168 THEN BEEP .1,8: LET SR=168 405 IF K$="L" THEN LET SC=SC+A: IF SC>224 THEN BEEP .1,8: LET SC=224 410 RETURN 790 REM --- MENU --- 820 GO SUB 1020: PRINT AT 10,6;"PRESS :"''TAB 6;"\f M - FOR THIS SCREEN"'TAB 6;"\f H - FOR HELP SCREENS"'TAB 6;"\f C - TO CREATE PICTURE"'TAB 6;"\f L - TO LOAD PICTURE"'TAB 6;"\f S - TO SAVE PICTURE" 823 PRINT TAB 6;"\f X - TO CLEAR PICTURE"'TAB 6;"\f P - TO COPY TO PRINTER"'TAB 6;"\f Q - TO QUIT": GO SUB 999: PRINT AT 9,13;" MENU " 824 INPUT "": PRINT #0;" PICK OPTION OR PRESS " 825 LET K$=INKEY$: IF K$="" THEN GO TO 825 830 IF K$="h" THEN INPUT "": GO SUB 997: GO TO 850 831 IF K$="c" THEN GO TO 2000 832 IF K$="s" THEN IF ST THEN GO SUB 997: GO TO 1040 834 IF K$="l" THEN GO SUB 1450: CLS : GO TO 820 836 IF K$="p" THEN CLS : RANDOMIZE USR 37183: COPY : GO TO 820 837 IF K$="x" THEN INPUT "": PRINT #0;" ARE YOU SURE? (Y/N)": GO SUB 990: GO TO 824 839 IF K$="q" THEN CLS : POKE 23692,25: PRINT AT 21,0;"* TYPE TO CONTINUE OR VARIABLES WILL BE CLEARED FROM MEMORY.": FOR J=1 TO 19: PRINT : NEXT J: STOP 840 IF K$=CHR$ 13 THEN IF ST THEN GO SUB 40: GO TO 50 846 GO TO 825 847 REM 848 REM --- HELP SCREENS --- 849 GO SUB 1020 850 PRINT AT 10,1;""'TAB 2;"KEYS IN BIG PIX MODE :"''" \d HOLD DOWN "'" I & KEYS TO MOVE"'" \eJ L\f ENTIRE SCREEN."'" K"'" \g USE KEYS ALONE"'TAB 9;"TO MOVE CURSOR." 852 PRINT 'TAB 25;"Page 1"'#0;" PRESS ANY KEY TO CONTINUE": PLOT 67,100: DRAW 0,-96: PLOT 74,78: DRAW 116,0 860 GO SUB 999: PRINT AT 9,14;" HELP ": PAUSE 0: GO SUB 997 862 PRINT AT 11,5;"PRESS :"''TAB 5;"\f A - FOR DRAW MODE"'TAB 5;"\f S - FOR ERASE MODE"'TAB 5;"\f D - FOR NEUTRAL MODE"'TAB 5;"\f P - TO PRINT ROW/COLUMN"'TAB 5;"\f O - TO INVERT SCREEN" 864 PRINT TAB 5;"\f U - FOR SCREEN MODE"''TAB 25;"Page 2" 866 GO SUB 999: PRINT AT 9,14;" HELP ": PAUSE 0: GO SUB 997: INPUT "" 870 PRINT AT 10,1;""'TAB 2;"KEYS IN SCREEN MODE :"'" \d"'" I KEYS"'" \eJ L\f \f MOVE BOX (STEP 1)"'" K & "'" \g \f MOVE BOX (STEP 8)" 871 PRINT '" PRESS: Y - FOR ATTRIBUTES"'TAB 10;"U - FOR BIG PIX MODE" 873 PRINT TAB 25;"Page 3": PLOT 67,100: DRAW 0,-65: DRAW -67,0: PLOT 74,78: DRAW 108,0 876 GO SUB 999: PRINT AT 9,14;" HELP "'#0;" PRESS FOR MENU OR ": PAUSE 0 877 LET K$=INKEY$: IF K$="" THEN GO TO 877 878 IF K$="m" THEN CLS : GO TO 820 879 IF K$=CHR$ 13 THEN IF ST THEN GO SUB 40: GO TO 50 885 GO TO 877 980 REM ------ 990 IF INKEY$="y" THEN RANDOMIZE USR 37253: INPUT "": PRINT #0;TAB 13;"DONE": PAUSE 90: RETURN 991 IF INKEY$="n" THEN RETURN 992 GO TO 990 996 REM ------ 997 FOR J=9 TO 21: PRINT AT J,0;" ": NEXT J: RETURN 998 REM ------ 999 PLOT 0,100: DRAW 255,0: DRAW 0,-97: DRAW -255,0: DRAW 0,97: RETURN 1010 REM ------ 1020 CLS : BORDER 7: LET FL=0: RANDOMIZE USR 37349: PLOT 4,108: INK 7: DRAW 0,3: PLOT 5,107: DRAW 246,0: PLOT 252,108: DRAW 0,3: RANDOMIZE USR 37268: PLOT 252,112: INK 0: POKE 37295,1: RETURN 1030 REM --- SAVE PICTURE --- 1040 PRINT AT 11,3;"PRESS :"''" \f S - TO SAVE AS A SCREEN$ "''" \f L - TO SAVE FROM MEMORY" 1043 GO SUB 999: PRINT AT 9,13;" SAVE " 1045 LET K$=INKEY$: IF K$<>"s" AND K$<>"l" AND K$<>CHR$ 13 THEN GO TO 1045 1047 IF K$=CHR$ 13 THEN GO TO 820 1050 IF K$="l" THEN GO TO 1070 1053 FOR J=15 TO 11 STEP -1: PRINT AT J+1,3;" "'AT J,3;"\f SAVE AS A SCREEN$ ": PAUSE 5: NEXT J 1055 INPUT "BORDER COLOR? (0-7): "; LINE B$: IF B$="" THEN GO TO 820 1057 IF B$<"0" OR B$>"7" THEN GO TO 1055 1060 BORDER VAL B$: CLS : RANDOMIZE USR 37183: RANDOMIZE USR 37415: SAVE N$SCREEN$ : GO SUB 40: CLS : GO TO 820 1070 FOR J=15 TO 11 STEP -1: PRINT AT J+1,3;" "'AT J,3;"\f SAVE FROM MEMORY ": PAUSE 5: NEXT J 1075 PRINT AT 13,4;"PRESS :"''" \f 1 - TO SAVE 1/3 OF SCREEN"'" \f 2 - TO SAVE 2/3 OF SCREEN"'" \f 3 - TO SAVE ALL OF SCREEN" 1080 PLOT 0,60: DRAW 0,-50 1085 LET K$=INKEY$: IF K$<>"1" AND K$<>"2" AND K$<>"3" AND K$<>CHR$ 13 THEN GO TO 1085 1088 IF K$=CHR$ 13 THEN GO TO 820 1090 INPUT "": SAVE N$CODE 50000,2048*VAL K$ 1120 INPUT "": PRINT #0;" VERIFY CODES? (Y/N)" 1125 GO SUB 1400: IF INKEY$="n" THEN GO TO 820 1145 PRINT '"* VERIFYING :"'" """;N$;""" CODE 50000,";2048*VAL K$: VERIFY N$CODE : PRINT ' FLASH 1;"TURN OFF RECORDER": PAUSE 60: GO TO 820 1200 GO TO 1045 1400 REM --- VERIFY --- 1405 INPUT "": PRINT #0;" VERIFY CODES? (Y/N)" 1410 IF INKEY$<>"y" AND INKEY$<>"n" THEN GO TO 1410 1425 IF INKEY$="n" THEN RETURN 1430 CLS : PRINT "* REWIND TAPE AND PRESS PLAY TO VERIFY"' 1435 IF IN 254<>95 THEN GO TO 1435 1440 RETURN 1450 REM --- LOAD --- 1460 CLS : PRINT "* ENTER NAME OF PICTURE.": INPUT N$ 1465 IF N$="" THEN RETURN 1470 LET ST=1: PRINT '"* PRESS PLAY ON RECORDER.": GO SUB 1435: PRINT '"* LOADING :"'" """;N$;""" CODE 50000": LOAD N$CODE 50000: PRINT ' FLASH 1;"TURN OFF RECORDER": PAUSE 120: GO SUB 40: GO TO 50 1980 REM ------ 2000 INPUT "NAME OF PICTURE? ";N$: IF N$="" THEN GO TO 2000 2005 IF LEN N$>10 THEN GO TO 2000 2010 LET ST=1: GO SUB 40: GO TO 50 2970 REM 2980 REM --- PROGRAM STARTS HERE. 2990 CLEAR 36911: LOAD "pix.code"CODE 36912: CLS : PRINT AT 11,7; FLASH 1;"TURN OFF RECORDER": PAUSE 120 3000 LET N=47661: FOR J=1 TO 30: POKE (N+J),7: POKE (N+32+J),7: POKE (N+64+J),7: POKE (N+96+J),7: POKE (N+128+J),4: POKE (N+160+J),4 3005 POKE (N+192+J),5: POKE (N+224+J),5: POKE (N+256+J),7: NEXT J 3010 FOR J=0 TO 8: POKE (N+J*32),7: POKE (N+J*32+31),7: NEXT J 3013 LET N$="PICTURE": POKE 37295,0: LET ST=0 3015 POKE 23728,51: POKE 23729,146: RANDOMIZE USR 37361 3020 POKE 23658,0: LET FL=0: LET SR=87: LET SC=121: LET GR=11: LET GC=16: LET PR=0 3023 POKE 23658,0: POKE 23675,133: POKE 23676,144 3030 GO TO 820 9960 REM 9970 REM --- SAVE ROUTINE --- 9999 SAVE "pix fix" LINE 2990: SAVE "pix.code"CODE 36912,1544: CLS : PRINT "* REWIND TAPE AND PRESS PLAY TO VERIFY.": VERIFY "pix fix": VERIFY ""CODE ```