Home » Personal collection » Acorn hard disk » misc » misc3 » dcfprog3/Graphics/Super-PIC

dcfprog3/Graphics/Super-PIC

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 » Personal collection » Acorn hard disk » misc » misc3
Filename: dcfprog3/Graphics/Super-PIC
Read OK:
File size: 0479 bytes
Load address: 0000
Exec address: 0000
File contents
   10 C=7
   20 MODE 2:Y=0:Y2=0:ON ERROR PROCerror
   30 VDU 28,0,4,12,0:NE=0:DIM L(290,4)
   40 A$=GET$
   50 IF A$="Z" THEN GCOL 0,0:MOVE Y,Y2:DRAW Y,Y2:GCOL0,C:Y=Y-1
   60 IF A$="X" THEN GCOL 0,0:MOVE Y,Y2:DRAW Y,Y2:GCOL 0,C:Y=Y+1
   70 IF A$=":" THEN GCOL 0,0:MOVE Y,Y2:DRAW Y,Y2:GCOL 0,C:Y2=Y2+1
   80 IF A$="/" THEN GCOL 0,0:MOVE Y,Y2:DRAW Y,Y2:GCOL 0,C:Y2=Y2-1
   90 IF A$="M" THEN L(NE,0)=Y:L(NE,1)=Y2
   95 IF A$="Q" THEN GCOL 0,0:MOVE Y,Y2:DRAW Y,Y2:GCOL 0,C:Y=500:Y2=500
  100 IF A$="D" THEN L(NE,2)=Y:L(NE,3)=Y2:NE=NE+1:MOVE L(NE-1,0),L(NE-1,1):DRAW L(NE-1,2),L(NE-1,3):L(NE-1,4)=C
  105 IF A$="Z" THEN INPUTY,Y2
  110 IF A$="R" THEN PROCredraw
  120 IF A$="S" THEN PROCsave
  130 IF A$="L" THEN PROCload
  140 IF A$="C" THEN INPUT C:FOR C2=0 TO 15:IF C=C2 THEN GCOL 0,C:NEXTC2
  150 IF Y<0 OR Y>1000 THEN Y=1000
  160 IF Y2<0 OR Y2>800 THEN Y2=800
  170 MOVE Y,Y2:DRAW Y,Y2:GOTO 40
  180 DEFPROCredraw
  190 IF NE=0 THEN ENDPROC
  200 FOR R=1 TO NE:COLOUR L(R,4)
  210 MOVE L(R,0),L(R,1):DRAW L(R,2),L(R,3)
  220 NEXT:ENDPROC
  230 DEFPROCload:CLEAR:Y=0:Y2=0:DIM L(290,4)
  240 INPUT"FILENAME";F$:*EXEC F$:ENDPROC
  250 DEFPROCsave
  260 INPUT"FILENAME";F$:*SPOOL F$
  270 PRINT"MODE 2:VDU 28,0,4,12,0:NE=";NE
  290 FOR S=0 TO NE-1:PRINT"GCOL";L(S,4) 
  300 PRINT"MOVE";L(S,0);",";L(S,1);":DRAW";L(S,2);",";L(S,3):NEXT:*SPOOL
  310 ENDPROC
  320 DEFPROCerror
  330 IF ERR=15 THEN PRINT"OUT OF MEMORY!":PRINT"SAVING":PROCsave
  340 IF ERR=17 THEN PRINT"ESCAPE!":VDU7
  350 IF ERR<>17 AND ERR<>15 THEN PRINTERR:END
  360 ENDPROC

 C=7
 � 2:Y=0:Y2=0:� � �error
" � 28,0,4,12,0:NE=0:� L(290,4)
(	 A$=�
2. � A$="Z" � � 0,0:� Y,Y2:� Y,Y2:�0,C:Y=Y-1
</ � A$="X" � � 0,0:� Y,Y2:� Y,Y2:� 0,C:Y=Y+1
F1 � A$=":" � � 0,0:� Y,Y2:� Y,Y2:� 0,C:Y2=Y2+1
P1 � A$="/" � � 0,0:� Y,Y2:� Y,Y2:� 0,C:Y2=Y2-1
Z$ � A$="M" � L(NE,0)=Y:L(NE,1)=Y2
_6 � A$="Q" � � 0,0:� Y,Y2:� Y,Y2:� 0,C:Y=500:Y2=500
dd � A$="D" � L(NE,2)=Y:L(NE,3)=Y2:NE=NE+1:� L(NE-1,0),L(NE-1,1):� L(NE-1,2),L(NE-1,3):L(NE-1,4)=C
i � A$="Z" � �Y,Y2
n � A$="R" � �redraw
x � A$="S" � �save
� � A$="L" � �load
�2 � A$="C" � � C:� C2=0 � 15:� C=C2 � � 0,C:�C2
� � Y<0 � Y>1000 � Y=1000
� � Y2<0 � Y2>800 � Y2=800
� � Y,Y2:� Y,Y2:� �Th@
�
 ��redraw
� � NE=0 � �
� � R=1 � NE:� L(R,4)
�$ � L(R,0),L(R,1):� L(R,2),L(R,3)
� �:�
�! ��load:�:Y=0:Y2=0:� L(290,4)
�$ �"FILENAME";F$:*EXEC F$:ENDPROC
� ��save
 �"FILENAME";F$:*SPOOL F$
% �"MODE 2:VDU 28,0,4,12,0:NE=";NE
"! � S=0 � NE-1:�"GCOL";L(S,4) 
,A �"MOVE";L(S,0);",";L(S,1);":DRAW";L(S,2);",";L(S,3):�:*SPOOL
6 �
@ ��error
J/ � �=15 � �"OUT OF MEMORY!":�"SAVING":�save
T � �=17 � �"ESCAPE!":�7
^ � �<>17 � �<>15 � �:�
h �
�
00000000  0d 00 0a 08 20 43 3d 37  0d 00 14 1c 20 eb 20 32  |.... C=7.... . 2|
00000010  3a 59 3d 30 3a 59 32 3d  30 3a ee 20 85 20 f2 65  |:Y=0:Y2=0:. . .e|
00000020  72 72 6f 72 0d 00 1e 22  20 ef 20 32 38 2c 30 2c  |rror..." . 28,0,|
00000030  34 2c 31 32 2c 30 3a 4e  45 3d 30 3a de 20 4c 28  |4,12,0:NE=0:. L(|
00000040  32 39 30 2c 34 29 0d 00  28 09 20 41 24 3d be 0d  |290,4)..(. A$=..|
00000050  00 32 2e 20 e7 20 41 24  3d 22 5a 22 20 8c 20 e6  |.2. . A$="Z" . .|
00000060  20 30 2c 30 3a ec 20 59  2c 59 32 3a df 20 59 2c  | 0,0:. Y,Y2:. Y,|
00000070  59 32 3a e6 30 2c 43 3a  59 3d 59 2d 31 0d 00 3c  |Y2:.0,C:Y=Y-1..<|
00000080  2f 20 e7 20 41 24 3d 22  58 22 20 8c 20 e6 20 30  |/ . A$="X" . . 0|
00000090  2c 30 3a ec 20 59 2c 59  32 3a df 20 59 2c 59 32  |,0:. Y,Y2:. Y,Y2|
000000a0  3a e6 20 30 2c 43 3a 59  3d 59 2b 31 0d 00 46 31  |:. 0,C:Y=Y+1..F1|
000000b0  20 e7 20 41 24 3d 22 3a  22 20 8c 20 e6 20 30 2c  | . A$=":" . . 0,|
000000c0  30 3a ec 20 59 2c 59 32  3a df 20 59 2c 59 32 3a  |0:. Y,Y2:. Y,Y2:|
000000d0  e6 20 30 2c 43 3a 59 32  3d 59 32 2b 31 0d 00 50  |. 0,C:Y2=Y2+1..P|
000000e0  31 20 e7 20 41 24 3d 22  2f 22 20 8c 20 e6 20 30  |1 . A$="/" . . 0|
000000f0  2c 30 3a ec 20 59 2c 59  32 3a df 20 59 2c 59 32  |,0:. Y,Y2:. Y,Y2|
00000100  3a e6 20 30 2c 43 3a 59  32 3d 59 32 2d 31 0d 00  |:. 0,C:Y2=Y2-1..|
00000110  5a 24 20 e7 20 41 24 3d  22 4d 22 20 8c 20 4c 28  |Z$ . A$="M" . L(|
00000120  4e 45 2c 30 29 3d 59 3a  4c 28 4e 45 2c 31 29 3d  |NE,0)=Y:L(NE,1)=|
00000130  59 32 0d 00 5f 36 20 e7  20 41 24 3d 22 51 22 20  |Y2.._6 . A$="Q" |
00000140  8c 20 e6 20 30 2c 30 3a  ec 20 59 2c 59 32 3a df  |. . 0,0:. Y,Y2:.|
00000150  20 59 2c 59 32 3a e6 20  30 2c 43 3a 59 3d 35 30  | Y,Y2:. 0,C:Y=50|
00000160  30 3a 59 32 3d 35 30 30  0d 00 64 64 20 e7 20 41  |0:Y2=500..dd . A|
00000170  24 3d 22 44 22 20 8c 20  4c 28 4e 45 2c 32 29 3d  |$="D" . L(NE,2)=|
00000180  59 3a 4c 28 4e 45 2c 33  29 3d 59 32 3a 4e 45 3d  |Y:L(NE,3)=Y2:NE=|
00000190  4e 45 2b 31 3a ec 20 4c  28 4e 45 2d 31 2c 30 29  |NE+1:. L(NE-1,0)|
000001a0  2c 4c 28 4e 45 2d 31 2c  31 29 3a df 20 4c 28 4e  |,L(NE-1,1):. L(N|
000001b0  45 2d 31 2c 32 29 2c 4c  28 4e 45 2d 31 2c 33 29  |E-1,2),L(NE-1,3)|
000001c0  3a 4c 28 4e 45 2d 31 2c  34 29 3d 43 0d 00 69 15  |:L(NE-1,4)=C..i.|
000001d0  20 e7 20 41 24 3d 22 5a  22 20 8c 20 e8 59 2c 59  | . A$="Z" . .Y,Y|
000001e0  32 0d 00 6e 17 20 e7 20  41 24 3d 22 52 22 20 8c  |2..n. . A$="R" .|
000001f0  20 f2 72 65 64 72 61 77  0d 00 78 15 20 e7 20 41  | .redraw..x. . A|
00000200  24 3d 22 53 22 20 8c 20  f2 73 61 76 65 0d 00 82  |$="S" . .save...|
00000210  15 20 e7 20 41 24 3d 22  4c 22 20 8c 20 f2 6c 6f  |. . A$="L" . .lo|
00000220  61 64 0d 00 8c 32 20 e7  20 41 24 3d 22 43 22 20  |ad...2 . A$="C" |
00000230  8c 20 e8 20 43 3a e3 20  43 32 3d 30 20 b8 20 31  |. . C:. C2=0 . 1|
00000240  35 3a e7 20 43 3d 43 32  20 8c 20 e6 20 30 2c 43  |5:. C=C2 . . 0,C|
00000250  3a ed 43 32 0d 00 96 1c  20 e7 20 59 3c 30 20 84  |:.C2.... . Y<0 .|
00000260  20 59 3e 31 30 30 30 20  8c 20 59 3d 31 30 30 30  | Y>1000 . Y=1000|
00000270  0d 00 a0 1d 20 e7 20 59  32 3c 30 20 84 20 59 32  |.... . Y2<0 . Y2|
00000280  3e 38 30 30 20 8c 20 59  32 3d 38 30 30 0d 00 aa  |>800 . Y2=800...|
00000290  19 20 ec 20 59 2c 59 32  3a df 20 59 2c 59 32 3a  |. . Y,Y2:. Y,Y2:|
000002a0  e5 20 8d 54 68 40 0d 00  b4 0d 20 dd f2 72 65 64  |. .Th@.... ..red|
000002b0  72 61 77 0d 00 be 0f 20  e7 20 4e 45 3d 30 20 8c  |raw.... . NE=0 .|
000002c0  20 e1 0d 00 c8 18 20 e3  20 52 3d 31 20 b8 20 4e  | ..... . R=1 . N|
000002d0  45 3a fb 20 4c 28 52 2c  34 29 0d 00 d2 24 20 ec  |E:. L(R,4)...$ .|
000002e0  20 4c 28 52 2c 30 29 2c  4c 28 52 2c 31 29 3a df  | L(R,0),L(R,1):.|
000002f0  20 4c 28 52 2c 32 29 2c  4c 28 52 2c 33 29 0d 00  | L(R,2),L(R,3)..|
00000300  dc 08 20 ed 3a e1 0d 00  e6 21 20 dd f2 6c 6f 61  |.. .:....! ..loa|
00000310  64 3a d8 3a 59 3d 30 3a  59 32 3d 30 3a de 20 4c  |d:.:Y=0:Y2=0:. L|
00000320  28 32 39 30 2c 34 29 0d  00 f0 24 20 e8 22 46 49  |(290,4)...$ ."FI|
00000330  4c 45 4e 41 4d 45 22 3b  46 24 3a 2a 45 58 45 43  |LENAME";F$:*EXEC|
00000340  20 46 24 3a 45 4e 44 50  52 4f 43 0d 00 fa 0b 20  | F$:ENDPROC.... |
00000350  dd f2 73 61 76 65 0d 01  04 1d 20 e8 22 46 49 4c  |..save.... ."FIL|
00000360  45 4e 41 4d 45 22 3b 46  24 3a 2a 53 50 4f 4f 4c  |ENAME";F$:*SPOOL|
00000370  20 46 24 0d 01 0e 25 20  f1 22 4d 4f 44 45 20 32  | F$...% ."MODE 2|
00000380  3a 56 44 55 20 32 38 2c  30 2c 34 2c 31 32 2c 30  |:VDU 28,0,4,12,0|
00000390  3a 4e 45 3d 22 3b 4e 45  0d 01 22 21 20 e3 20 53  |:NE=";NE.."! . S|
000003a0  3d 30 20 b8 20 4e 45 2d  31 3a f1 22 47 43 4f 4c  |=0 . NE-1:."GCOL|
000003b0  22 3b 4c 28 53 2c 34 29  20 0d 01 2c 41 20 f1 22  |";L(S,4) ..,A ."|
000003c0  4d 4f 56 45 22 3b 4c 28  53 2c 30 29 3b 22 2c 22  |MOVE";L(S,0);","|
000003d0  3b 4c 28 53 2c 31 29 3b  22 3a 44 52 41 57 22 3b  |;L(S,1);":DRAW";|
000003e0  4c 28 53 2c 32 29 3b 22  2c 22 3b 4c 28 53 2c 33  |L(S,2);",";L(S,3|
000003f0  29 3a ed 3a 2a 53 50 4f  4f 4c 0d 01 36 06 20 e1  |):.:*SPOOL..6. .|
00000400  0d 01 40 0c 20 dd f2 65  72 72 6f 72 0d 01 4a 2f  |..@. ..error..J/|
00000410  20 e7 20 9f 3d 31 35 20  8c 20 f1 22 4f 55 54 20  | . .=15 . ."OUT |
00000420  4f 46 20 4d 45 4d 4f 52  59 21 22 3a f1 22 53 41  |OF MEMORY!":."SA|
00000430  56 49 4e 47 22 3a f2 73  61 76 65 0d 01 54 1b 20  |VING":.save..T. |
00000440  e7 20 9f 3d 31 37 20 8c  20 f1 22 45 53 43 41 50  |. .=17 . ."ESCAP|
00000450  45 21 22 3a ef 37 0d 01  5e 1b 20 e7 20 9f 3c 3e  |E!":.7..^. . .<>|
00000460  31 37 20 80 20 9f 3c 3e  31 35 20 8c 20 f1 9f 3a  |17 . .<>15 . ..:|
00000470  e0 0d 01 68 06 20 e1 0d  ff                       |...h. ...|
00000479