00000000: 43 48 41 52 20 D0 4C 4F 54 D4 59 50 45 3B 0D 0D |CHAR .LOT.YPE;..|
00000010: 4D 41 49 4E 20 28 29 0D DB 0D 20 20 20 43 48 41 |MAIN ()... CHA|
00000020: 52 20 2A D0 4F 49 4E 54 45 52 2C 20 CB 45 59 2C |R *.OINTER, .EY,|
00000030: 20 D3 54 4F 52 45 31 2C 20 D3 54 4F 52 45 32 2C | .TORE1, .TORE2,|
00000040: 20 D3 54 4F 52 45 33 3B 0D 20 20 20 55 4E 53 49 | .TORE3;. UNSI|
00000050: 47 4E 45 44 20 49 4E 54 20 CC 4F 4F 50 2C 20 D8 |GNED INT .OOP, .|
00000060: 2C 20 D9 3B 0D 0D 20 20 20 48 49 47 48 4D 45 4D |, .;.. HIGHMEM|
00000070: 20 28 30 58 C3 C3 30 30 29 3B 0D 0D 20 20 20 D0 | (0X..00);.. .|
00000080: 4F 49 4E 54 45 52 20 3D 20 30 58 C4 C4 30 30 3B |OINTER = 0X..00;|
00000090: 0D 20 20 20 2A D0 4F 49 4E 54 45 52 20 3D 20 28 |. *.OINTER = (|
000000A0: D3 54 4F 52 45 31 20 3D 20 2A D0 4F 49 4E 54 45 |.TORE1 = *.OINTE|
000000B0: 52 29 20 26 20 32 35 32 3B 0D 20 20 20 D0 4F 49 |R) & 252;. .OI|
000000C0: 4E 54 45 52 20 3D 20 30 58 C4 30 31 31 3B 20 20 |NTER = 0X.011; |
000000D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
000000E0: 20 20 2F 2A 20 D4 55 52 4E 20 4F 4E 20 C7 52 41 | /* .URN ON .RA|
000000F0: 50 48 49 43 53 20 2A 2F 0D 20 20 20 2A D0 4F 49 |PHICS */. *.OI|
00000100: 4E 54 45 52 20 3D 20 28 D3 54 4F 52 45 32 20 3D |NTER = (.TORE2 =|
00000110: 20 2A D0 4F 49 4E 54 45 52 29 20 DF 20 33 32 3B | *.OINTER) . 32;|
00000120: 0D 20 20 20 D0 4F 49 4E 54 45 52 20 3D 20 30 58 |. .OINTER = 0X|
00000130: C4 30 31 38 3B 0D 20 20 20 D3 54 4F 52 45 33 20 |.018;. .TORE3 |
00000140: 3D 20 2A D0 4F 49 4E 54 45 52 3B 0D 20 20 20 2A |= *.OINTER;. *|
00000150: D0 4F 49 4E 54 45 52 20 3D 20 30 58 33 38 3B 0D |.OINTER = 0X38;.|
00000160: 0D 20 20 20 D0 4F 49 4E 54 45 52 20 3D 20 30 58 |. .OINTER = 0X|
00000170: 30 32 38 41 3B 20 20 20 20 20 20 20 20 20 20 20 |028A; |
00000180: 20 20 20 20 20 20 20 20 20 2F 2A 20 D4 55 52 4E | /* .URN|
00000190: 20 4F 4E 20 4B 45 59 20 52 45 50 45 41 54 20 2A | ON KEY REPEAT *|
000001A0: 2F 0D 20 20 20 2A D0 4F 49 4E 54 45 52 20 3D 20 |/. *.OINTER = |
000001B0: 31 32 38 3B 0D 20 20 20 C6 41 53 54 CB 45 59 53 |128;. .AST.EYS|
000001C0: 20 28 29 3B 0D 0D 20 20 20 C3 4C 45 41 52 20 28 | ();.. .LEAR (|
000001D0: 30 58 C3 C3 30 30 2C 20 31 30 30 30 2C 20 39 33 |0X..00, 1000, 93|
000001E0: 29 3B 20 20 20 20 20 20 20 20 20 20 20 20 2F 2A |); /*|
000001F0: 20 C3 4C 45 41 52 20 43 4F 4C 4F 52 20 53 43 52 | .LEAR COLOR SCR|
00000200: 45 45 4E 20 2A 2F 0D 20 20 20 C3 4C 45 41 52 20 |EEN */. .LEAR |
00000210: 28 30 58 C5 30 30 30 2C 20 38 30 30 30 2C 20 30 |(0X.000, 8000, 0|
00000220: 29 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 2F |); /|
00000230: 2A 20 C3 4C 45 41 52 20 42 49 54 4D 41 50 20 2A |* .LEAR BITMAP *|
00000240: 2F 0D 20 20 20 D0 4C 4F 54 D4 59 50 45 20 3D 20 |/. .LOT.YPE = |
00000250: 31 3B 0D 20 20 20 D8 20 3D 20 31 36 30 3B 0D 20 |1;. . = 160;. |
00000260: 20 20 D9 20 3D 20 31 30 30 3B 0D 20 20 20 D0 4C | . = 100;. .L|
00000270: 4F 54 20 28 D8 2C D9 29 3B 0D 20 20 20 57 48 49 |OT (.,.);. WHI|
00000280: 4C 45 20 28 28 CB 45 59 20 3D 20 57 41 49 54 4B |LE ((.EY = WAITK|
00000290: 45 59 28 29 29 20 21 3D 20 33 29 0D 20 20 20 DB |EY()) != 3). .|
000002A0: 0D 20 20 20 20 20 20 53 57 49 54 43 48 20 28 CB |. SWITCH (.|
000002B0: 45 59 29 0D 20 20 20 20 20 20 DB 0D 20 20 20 20 |EY). .. |
000002C0: 20 20 20 20 20 43 41 53 45 20 27 49 27 3A 0D 20 | CASE 'I':. |
000002D0: 20 20 20 20 20 20 20 20 43 41 53 45 20 27 C9 27 | CASE '.'|
000002E0: 3A 20 D0 4C 4F 54 20 28 D8 2C 2D 2D D9 29 3B 20 |: .LOT (.,--.); |
000002F0: 20 20 20 20 20 20 20 2F 2A 20 C1 4C 4C 4F 57 20 | /* .LLOW |
00000300: 55 53 45 52 20 54 4F 20 44 52 41 57 20 4C 49 4E |USER TO DRAW LIN|
00000310: 45 53 20 20 2A 2F 0D 20 20 20 20 20 20 20 20 20 |ES */. |
00000320: 20 20 20 20 20 20 20 20 20 20 42 52 45 41 4B 3B | BREAK;|
00000330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F | /|
00000340: 2A 20 42 59 20 55 53 49 4E 47 20 54 48 45 20 C9 |* BY USING THE .|
00000350: 2C 20 CA 2C 20 CB 2C 20 CD 20 20 20 2A 2F 0D 20 |, ., ., . */. |
00000360: 20 20 20 20 20 20 20 20 43 41 53 45 20 27 4D 27 | CASE 'M'|
00000370: 3A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |: |
00000380: 20 20 20 20 20 20 20 2F 2A 20 44 49 41 4D 4F 4E | /* DIAMON|
00000390: 44 2E 20 20 2D 2C 20 2B 2C 20 41 4E 44 20 2F 20 |D. -, +, AND / |
000003A0: 53 45 54 20 2A 2F 0D 20 20 20 20 20 20 20 20 20 |SET */. |
000003B0: 43 41 53 45 20 27 CD 27 3A 20 D0 4C 4F 54 20 28 |CASE '.': .LOT (|
000003C0: D8 2C 2B 2B D9 29 3B 20 20 20 20 20 20 20 20 2F |.,++.); /|
000003D0: 2A 20 43 4C 45 41 52 2C 20 53 45 54 2C 20 4F 52 |* CLEAR, SET, OR|
000003E0: 20 46 4C 49 50 20 4D 4F 44 45 20 20 2A 2F 0D 20 | FLIP MODE */. |
000003F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00000400: 20 20 42 52 45 41 4B 3B 20 20 20 20 20 20 20 20 | BREAK; |
00000410: 20 20 20 20 20 20 20 2F 2A 20 52 45 53 50 45 43 | /* RESPEC|
00000420: 54 49 56 45 4C 59 2E 20 20 D3 D4 CF D0 20 45 58 |TIVELY. .... EX|
00000430: 49 54 53 20 2A 2F 0D 20 20 20 20 20 20 20 20 20 |ITS */. |
00000440: 43 41 53 45 20 27 4A 27 3A 0D 20 20 20 20 20 20 |CASE 'J':. |
00000450: 20 20 20 43 41 53 45 20 27 CA 27 3A 20 D0 4C 4F | CASE '.': .LO|
00000460: 54 20 28 2D 2D D8 2C D9 29 3B 0D 20 20 20 20 20 |T (--.,.);. |
00000470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 52 | BR|
00000480: 45 41 4B 3B 0D 20 20 20 20 20 20 20 20 20 43 41 |EAK;. CA|
00000490: 53 45 20 27 4B 27 3A 0D 20 20 20 20 20 20 20 20 |SE 'K':. |
000004A0: 20 43 41 53 45 20 27 CB 27 3A 20 D0 4C 4F 54 20 | CASE '.': .LOT |
000004B0: 28 2B 2B D8 2C D9 29 3B 0D 20 20 20 20 20 20 20 |(++.,.);. |
000004C0: 20 20 20 20 20 20 20 20 20 20 20 20 42 52 45 41 | BREA|
000004D0: 4B 3B 0D 20 20 20 20 20 20 20 20 20 43 41 53 45 |K;. CASE|
000004E0: 20 27 2D 27 3A 20 D0 4C 4F 54 D4 59 50 45 20 3D | '-': .LOT.YPE =|
000004F0: 20 30 3B 0D 20 20 20 20 20 20 20 20 20 20 20 20 | 0;. |
00000500: 20 20 20 20 20 20 20 D0 4C 4F 54 20 28 D8 2C 20 | .LOT (., |
00000510: D9 29 3B 0D 20 20 20 20 20 20 20 20 20 20 20 20 |.);. |
00000520: 20 20 20 20 20 20 20 42 52 45 41 4B 3B 0D 20 20 | BREAK;. |
00000530: 20 20 20 20 20 20 20 43 41 53 45 20 27 2B 27 3A | CASE '+':|
00000540: 20 D0 4C 4F 54 D4 59 50 45 20 3D 20 31 3B 0D 20 | .LOT.YPE = 1;. |
00000550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00000560: 20 20 D0 4C 4F 54 20 28 D8 2C 20 D9 29 3B 0D 20 | .LOT (., .);. |
00000570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | |
00000580: 20 20 42 52 45 41 4B 3B 0D 20 20 20 20 20 20 20 | BREAK;. |
00000590: 20 20 43 41 53 45 20 27 2F 27 3A 20 D0 4C 4F 54 | CASE '/': .LOT|
000005A0: D4 59 50 45 20 3D 20 32 3B 0D 20 20 20 20 20 20 |.YPE = 2;. |
000005B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 D0 4C 4F | .LO|
000005C0: 54 20 28 D8 2C 20 D9 29 3B 0D 20 20 20 20 20 20 |T (., .);. |
000005D0: DD 0D 20 20 20 DD 0D 0D 20 20 20 D3 4C 4F 57 CB |.. ... .LOW.|
000005E0: 45 59 53 20 28 29 3B 0D 0D 20 20 20 D0 4F 49 4E |EYS ();.. .OIN|
000005F0: 54 45 52 20 3D 20 30 58 C4 C4 30 30 3B 0D 20 20 |TER = 0X..00;. |
00000600: 20 2A D0 4F 49 4E 54 45 52 20 3D 20 D3 54 4F 52 | *.OINTER = .TOR|
00000610: 45 31 3B 0D 20 20 20 D0 4F 49 4E 54 45 52 20 3D |E1;. .OINTER =|
00000620: 20 30 58 C4 30 31 31 3B 20 20 20 20 20 20 20 20 | 0X.011; |
00000630: 20 20 20 20 20 20 20 20 20 20 20 20 2F 2A 20 D2 | /* .|
00000640: 45 53 54 4F 52 45 20 D4 45 58 54 20 4D 4F 44 45 |ESTORE .EXT MODE|
00000650: 20 2A 2F 0D 20 20 20 2A D0 4F 49 4E 54 45 52 20 | */. *.OINTER |
00000660: 3D 20 D3 54 4F 52 45 32 3B 0D 20 20 20 D0 4F 49 |= .TORE2;. .OI|
00000670: 4E 54 45 52 20 3D 20 30 58 C4 30 31 38 3B 0D 20 |NTER = 0X.018;. |
00000680: 20 20 2A D0 4F 49 4E 54 45 52 20 3D 20 D3 54 4F | *.OINTER = .TO|
00000690: 52 45 33 3B 0D DD 0D 0D 0D 23 44 45 46 49 4E 45 |RE3;.....#DEFINE|
000006A0: 20 C7 C5 D4 C9 CE 20 20 30 58 C6 C6 C5 34 0D 0D | ..... 0X...4..|
000006B0: 43 48 41 52 20 41 2C 20 58 2C 20 59 2C 0D 20 20 |CHAR A, X, Y,. |
000006C0: 20 20 20 2A 4E 55 4D 4B 45 59 53 20 3D 20 31 39 | *NUMKEYS = 19|
000006D0: 38 3B 0D 0D 2F 2A 20 D7 41 49 54 53 20 46 4F 52 |8;../* .AITS FOR|
000006E0: 20 55 53 45 52 20 54 4F 20 50 52 45 53 53 20 41 | USER TO PRESS A|
000006F0: 20 4B 45 59 20 2A 2F 0D 0D 49 4E 54 20 57 41 49 | KEY */..INT WAI|
00000700: 54 4B 45 59 20 28 29 0D 0D DB 0D 20 20 20 57 48 |TKEY ().... WH|
00000710: 49 4C 45 20 28 2A 4E 55 4D 4B 45 59 53 20 3D 3D |ILE (*NUMKEYS ==|
00000720: 20 30 29 0D 20 20 20 20 20 20 3B 0D 20 20 20 53 | 0). ;. S|
00000730: 59 53 20 28 C7 C5 D4 C9 CE 2C 20 26 41 2C 20 26 |YS (....., &A, &|
00000740: 58 2C 20 26 59 29 3B 0D 20 20 20 52 45 54 55 52 |X, &Y);. RETUR|
00000750: 4E 20 41 3B 0D DD 0D |N A;... |
CHAR PLOTTYPE;..MAIN ()... CHAR *POINT
ER, KEY, STORE1, STORE2, STORE3;. UNSI
GNED INT LOOP, X, Y;.. HIGHMEM (0XCC00
);.. POINTER = 0XDD00;. *POINTER = (
STORE1 = *POINTER) & 252;. POINTER = 0
XD011; /* TURN ON GRA
PHICS */. *POINTER = (STORE2 = *POINTE
R) . 32;. POINTER = 0XD018;. STORE3
= *POINTER;. *POINTER = 0X38;.. POIN
TER = 0X028A; /* TURN
ON KEY REPEAT */. *POINTER = 128;.
FASTKEYS ();.. CLEAR (0XCC00, 1000, 93
); /* CLEAR COLOR SCREEN */.
CLEAR (0XE000, 8000, 0); /
* CLEAR BITMAP */. PLOTTYPE = 1;. X
= 160;. Y = 100;. PLOT (X,Y);. WHI
LE ((KEY = WAITKEY()) != 3). .. S
WITCH (KEY). .. CASE 'I':.
CASE 'I': PLOT (X,--Y); /
* ALLOW USER TO DRAW LINES */.
BREAK; /* BY USI
NG THE I, J, K, M */. CASE 'M'
: /* DIAMOND. -, +
, AND / SET */. CASE 'M': PLOT (
X,++Y); /* CLEAR, SET, OR FLIP MO
DE */. BREAK;
/* RESPECTIVELY. STOP EXITS */.
CASE 'J':. CASE 'J': PLO
T (--X,Y);. BREAK;.
CASE 'K':. CASE 'K': PLOT
(++X,Y);. BREAK;.
CASE '-': PLOTTYPE = 0;.
PLOT (X, Y);. B
REAK;. CASE '+': PLOTTYPE = 1;.
PLOT (X, Y);.
BREAK;. CASE '/': PLOT
TYPE = 2;. PLOT (X, Y)
;. .. ... SLOWKEYS ();.. POIN
TER = 0XDD00;. *POINTER = STORE1;. P
OINTER = 0XD011; /* R
ESTORE TEXT MODE */. *POINTER = STORE2
;. POINTER = 0XD018;. *POINTER = STO
RE3;.....#DEFINE GETIN 0XFFE4..CHAR A,
X, Y,. *NUMKEYS = 198;../* WAITS FOR
USER TO PRESS A KEY */..INT WAITKEY ().
... WHILE (*NUMKEYS == 0). ;. S
YS (GETIN, &A, &X, &Y);. RETURN A;...
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL