RIAG Crate 006: Volume 287 8 Bit Font Editor
Item Preview
Share or Embed This Item
Flag this item for
RIAG Crate 006: Volume 287 8 Bit Font Editor
- Language
- English
Alternative Name: RIAG - Volume 287 - 8-Bit Font Editor (K64)
Notes
Disk directory for Volume_287_8-Bit_Font_Editor.dsk:
riag_006_Volume_287_-_8-Bit_Font_Editor/Volume_287_8-Bit_Font_Editor.dsk /H70/
A2 BIN 009 01/08/1989 03/14/1989 3,828 A=$4000
A2FE BAS 013 01/31/1989 03/14/1989 6,076 A=$0801
EDIT BAS 013 01/15/1989 03/14/1989 6,037 A=$0801
Instructions AWP 036 01/31/1989 03/14/1989 17,409
BOCKLIN.40 FON 017 01/10/1989 03/14/1989 7,794
FINITA.12 FON 005 01/15/1989 03/14/1989 1,913
GETEOF BIN 001 08/26/1988 03/14/1989 76 A=$0300
TABLE BIN 001 08/29/1988 03/14/1989 12 A=$03C4
Y.TABLE BIN 001 08/28/1988 03/14/1989 146 A=$0300
STARTUP BAS 003 01/05/1989 03/14/1989 941 A=$0801
NEWSTUFF BAS 006 01/15/1989 03/14/1989 2,157 A=$0801
RAMOUT BIN 001 01/05/1989 03/14/1989 93 A=$0300
VARIABLES VAR 001 02/27/1989 03/14/1989 491 A=$941A
PRODOS SYS 032 04/14/1988 03/14/1989 15,485
BASIC.SYSTEM SYS 021 12/14/1987 03/14/1989 10,240
ProDOS format; 57,856 bytes free; 85,504 bytes used.
Text found in Volume_287_8-Bit_Font_Editor.dsk/A2FE.bas:
10 LOMEM: 4096 *6
15 ONERR GOTO 20000
20 AUX = 4:D$ = CHR$(4):BUF = 20480:A1 = 16504:A2 = 16512:A4 = 16520:HT = 16390:LF = 16412:CL = 16417:BT = 16419:CH = 16415:RO = 16416:AC = 16425:LC = 16424:PP = 16407:LG = 16408:F1 = 16409:ST = 16411:M4 = 16384:M5 = 16385:FA = 16398:FD = 16399
25 KN = 16428:PL = 16429:PR = 16430:AF = PP -2:AL = PP -1:A = 65
30 MS = 16467:TA = 16495:TM = TA +3:FI = 16527:CI = 17024:SR = 17647:DR = 17187:MW = 17981:MN = 18874:NS = 19354:FC = 19676:NI = 20076:TC = 20121
50 PRINT D$"bload a2": CALL MS: POKE AC,255: POKE LC,255
55 PRINT CHR$(4)"bloadgeteof"
60 GOTO 100
85 PRINT "Press any key...";: GET A$: RETURN
90 PRINT CHR$(4)"restore variables"
92 PRINT CHR$(4)"bloadgeteof"
95 ONERR GOTO 20000
100 TEXT : HOME : POKE 49167,0
110 FLASH : PRINT "A@A@";: NORMAL : PRINT " The 8-Bit IIgs Font Editor ";: FLASH : PRINT "@A@A";: NORMAL
115 FLASH : PRINT "_";: NORMAL : HTAB 15: PRINT "Version 1.0";: FLASH : HTAB 40: PRINT "Z";: NORMAL
120 FLASH : PRINT "_";: HTAB 40: PRINT "Z";: NORMAL
125 FLASH : PRINT "_";: NORMAL : HTAB 12: PRINT "by John G. Thomas";: HTAB 40: FLASH : PRINT "Z";: NORMAL
130 FLASH : PRINT "_";: NORMAL : PRINT " Ewing (New Jersey) Apple Users Group";: HTAB 40: FLASH : PRINT "Z";: NORMAL
135 FLASH : PRINT "_";: HTAB 40: PRINT "Z";: NORMAL
140 FLASH : PRINT "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL": NORMAL
150 INVERSE : PRINT "START SCREEN OPTIONS": NORMAL
160 PRINT
170 PRINT " View or dit character images ": PRINT
180 PRINT " Make a ew font from scratch": PRINT
182 PRINT " Toggle nput device (now ";: IF M THEN PRINT "Mouse)": PRINT : GOTO 184
183 PRINT "Keyboard)": PRINT
184 PRINT " ile stuff, font file facts": PRINT
190 PRINT " uit to ProDOS...to ASIC": PRINT
192 PRINT " Edit character
adding": PRINT
200 PRINT "Pick one ";: GET A$
210 B$ = "EeNnIiFfBbQqPp": GOSUB 2900
215 IF K = 0 THEN PRINT CHR$(7): GOTO 100
220 ON K GOTO 940,4000,250,5000,230,230,8000
230 HOME : PRINT "Quit now??? (y/n) ";: GET A$: IF A$ < >"Y" AND A$ < >"y" THEN 100
233 IF K = 5 THEN 240
235 PRINT D$"bye"
240 END
250 M = M +1: IF M = 2 THEN M = 0
255 GOTO 100
260 HOME : HTAB 6: FLASH : PRINT "XY";: NORMAL : PRINT " Prefix Control Center ";: FLASH : PRINT "XY": NORMAL
280 IF PF$ = "" THEN PRINT D$"prefix": INPUT VN$:PF$ = VN$
290 PRINT : PRINT : PRINT "Font directory: "PF$: PRINT : PRINT
300 PRINT "The above directory will be the data disk unless you specify a new one.": PRINT : PRINT
310 PRINT "Press to return to the File options or any other key to enter a new directory.";: GET A$: IF A$ = CHR$(27) THEN 5000
330 PRINT : PRINT : PRINT : INPUT "New directory: ";PF$
340 IF RIGHT$(PF$,1) < >"/" THEN PF$ = PF$ +"/"
350 GOTO 5000
940 IF NOT FM THEN HOME : PRINT "No font in memory yet.": GOSUB 85: GOTO 100
950 PRINT D$"store variables"
960 PRINT D$"-edit"
1010 HOME : INPUT "Font file to load: ";F$: IF F$ = "" THEN 5000
1012 A$ = PF$ +F$: POKE 828, LEN(A$)
1015 FOR X = 1 TO LEN(A$): POKE 828 +X, ASC( MID$ (A$,X,1)): NEXT
1017 CALL 768:EF = PEEK(804) +256 * PEEK(805):B = 0:AUX = 4
1020 IF EF +1024 >48895 THEN HOME : PRINT "That file's too big.": PRINT "Pick another.": GOSUB 85: GOTO 5000
1025 IF EF <4097 THEN 1093
1030 PRINT D$"bload"A$",t$c8,a"BUF",l4096,b"B
1070 POKE A1,80: POKE A2,95: POKE A4,AUX: CALL TA
1080 B = B +4096:AUX = AUX +16:EF = EF -4096: IF EF <4097 THEN 1093
1090 GOTO 1030
1093 PRINT D$"bload"A$",t$c8,a"BUF",l"EF",b"B
1095 POKE A1,80: POKE A2,95: POKE A4,AUX: CALL TA
1100 FM = 1: CALL FI: GOTO 100
2900 K = 0: FOR X = 1 TO LEN(B$)
2910 IF A$ = MID$ (B$,X,1) THEN K = X
2920 NEXT
2927 K = K/2: IF K < > INT(K) THEN K = INT(K) +1
2930 RETURN
3020 IF NOT FM THEN HOME : PRINT "No font to save.": GOSUB 85: GOTO 5000
3030 HOME : PRINT "Enter filename";: IF LEN(F$) THEN PRINT " or press ": PRINT "to use "F$: PRINT : PRINT "New filename: ";: GOTO 3032
3031 PRINT ": ";
3032 INPUT "";A$: IF A$ = "" THEN A$ = F$
3033 A$ = PF$ +A$
3034 B = 0:AUX = 4: CALL FI:EF = PEEK(LF) + PEEK(LF +1) *256
3035 PRINT : PRINT : PRINT "Saving "A$"...": PRINT
3036 PRINT D$"verify"A$
3037 PRINT D$"delete"A$: GOTO 3040
3038 ONERR GOTO 20000
3040 PRINT D$"create"A$",t$c8"
3043 IF EF <4097 THEN 3065
3045 POKE A1,AUX: POKE A2,AUX +15: POKE A4,80: CALL TM: PRINT D$"bsave"A$",t$c8,a"BUF",l4096,b"B
3055 B = B +4096:AUX = AUX +16:EF = EF -4096: IF EF <4097 THEN 3065
3060 GOTO 3045
3065 POKE A1,AUX: POKE A2,AUX +15: POKE A4,80: CALL TM: PRINT D$"bsave"A$",t$c8,a"BUF",l"EF",b"B
3100 PRINT "Done. ";: GOSUB 85: GOTO 5000
4000 PRINT D$"store variables"
4010 PRINT D$"run newstuff"
5000 HOME : HTAB 11: FLASH : PRINT "FG";: NORMAL : PRINT " File Stuff ";: FLASH : PRINT "FG": NORMAL
5010 PRINT : PRINT : PRINT
5020 PRINT " oad file": PRINT
5030 PRINT " ave font": PRINT
5040 PRINT " Get atalog": PRINT
5050 PRINT " Select
refix for data disk": PRINT
5052 PRINT " See ont facts": PRINT
5060 PRINT " ape to Start Screen": PRINT
5070 PRINT : PRINT "Pick one ";: GET A$
5080 B$ = "LlSsCcPpFf" + CHR$(27) + CHR$(27): GOSUB 2900: IF K = 0 THEN PRINT CHR$(7): GOTO 5000
5090 ON K GOTO 1010,3020,7000,260,8500,100
7000 HOME
7010 X = LEN(PF$): IF X THEN PRINT D$"cat"PF$: GOTO 7040
7020 PRINT D$"cat"
7040 PRINT : GOSUB 85: GOTO 5000
8000 HOME : IF NOT FM THEN PRINT "No font in memory.": GOSUB 85: GOTO 100
8005 X = PEEK(PP): IF X >0 AND X <255 THEN PRINT "Non-proportional font.": GOSUB 85: GOTO 100
8010 CALL FI:X = PEEK(BUF):A$ = "": FOR Y = 1 TO X:A$ = A$ + CHR$( PEEK(BUF +Y)): NEXT
8020 PRINT "Font Family Name: "A$: HTAB 13: PRINT "Size: " PEEK(HT)
8030 FOR X = 1 TO 40: PRINT "-";: NEXT
8040 PRINT : INPUT "Enter the ASCII number of the character to work with: ";A$:A = VAL(A$): IF A < PEEK(AF) OR A > PEEK(AL) THEN PRINT CHR$(7): PRINT "Error--out of range...": FOR X = 1 TO 2500: NEXT : GOTO 8000
8050 POKE CH,A: CALL CI: IF PEEK(CH) = PEEK(AF -1) THEN PRINT "This character is undefined.": GOSUB 85: GOTO 8000
8060 PRINT : HTAB 7: PRINT "Character: " CHR$(A): PRINT
8070 X = PEEK(BT): HTAB 5: PRINT "Image width: "X
8080 X = PEEK(LC -1) -X: PRINT "Padding ight: "X
8090 X = PEEK(HT -5): IF X <128 THEN X = PEEK(LC -2): GOTO 8120
8110 X = X -256 + PEEK(LC -2)
8120 PRINT " Padding eft: "X: PRINT : PRINT : PRINT "Pick padding to change, press to see another, or to go back... ";: GET A$
8130 B$ = "RrLl" + CHR$(13) + CHR$(13) + CHR$(27) + CHR$(27): GOSUB 2900: IF K = 0 THEN PRINT CHR$(7): GOTO 8000
8140 ON K GOTO 8150,8220,8000,100
8150 PRINT : PRINT : PRINT "Padding on right for character " CHR$(A): PRINT "should be: ";: INPUT A$:X = VAL(A$): IF ABS(X) >255 THEN PRINT CHR$(7): PRINT "Error--out of range...": FOR X = 1 TO 2500: NEXT : GOTO 8150
8160 IF X > -1 THEN POKE PR,X: POKE PR +1,0: GOTO 8180
8170 POKE PR +1, ABS(X): POKE PR,0
8180 CALL CI: CALL FC: CALL FI: CALL CI
8200 PRINT "Done.": PRINT : PRINT "Work with the ame or a ifferent character, or press to return to Start Screen options. ";: GET A$:B$ = "SsDd" + CHR$(27) + CHR$(27): GOSUB 2900: IF K = 0 THEN PRINT CHR$(7);: GOTO 8200
8210 ON K GOTO 8060,8000,100
8220 PRINT : PRINT : PRINT "Padding on left for character " CHR$(A): PRINT "should be: ";: INPUT A$:X = VAL(A$): IF ABS(X) >255 THEN PRINT CHR$(7): PRINT "Error--out of range...": FOR X = 1 TO 2500: NEXT : GOTO 8220
8230 IF X > -1 THEN POKE PL,X: GOTO 8250
8240 POKE KN, ABS(X): POKE PL,0
8250 CALL CI: CALL FC: CALL FI: CALL CI: GOTO 8200
8500 HOME : IF NOT FM THEN PRINT "No font in memory.": GOSUB 85: GOTO 5000
8510 CALL FI:X = PEEK(BUF):A$ = "": FOR Y = 1 TO X:A$ = A$ + CHR$( PEEK(BUF +Y)): NEXT
8520 PRINT " Family Name: "A$: PRINT "Family Number: " PEEK(F1) + PEEK(F1 +1) *256;: HTAB 31: PRINT "Size: " PEEK(HT)
8530 FOR X = 1 TO 40: PRINT "-";: NEXT
8535 PRINT : PRINT
8540 X = PEEK(LF) + PEEK(LF +1) *256: HTAB 4: PRINT "File length in bytes: "X
8550 PRINT " ASCII, first character: " PEEK(AF)
8560 PRINT " ASCII, last character: " PEEK(AL)
8570 PRINT "Maximum character width: " PEEK(M4)
8580 X = PEEK(M5): IF X >127 THEN X = X -256
8585 PRINT " Maximum leftward kern: "X
8590 HTAB 13: PRINT "Font ascent: " PEEK(FA)
8600 HTAB 12: PRINT "Font descent: " PEEK(FD)
8610 HTAB 17: PRINT "Leading: " PEEK(LG)
8620 HTAB 14: PRINT "Style byte: " PEEK(ST)
8630 X = PEEK(PP): HTAB 6: PRINT "Proportional (y/n): ";: IF X = 255 THEN PRINT "can't tell yet": GOTO 8700
8640 IF X THEN PRINT "No--NPCWC="X: GOTO 8700
8650 PRINT "Yes"
8644 REM
8700 PRINT : GOSUB 85: GOTO 5000
9000 END
20000 POKE 216,0:EC = PEEK(222):EL = PEEK(218) + PEEK(219) *256:ER$ = "Unexpected error #" + STR$(EC)
20005 IF EC = 6 AND EL = 3036 THEN POKE 216,0: CALL -3288: GOTO 3038
20020 IF EC = 6 THEN ER$ = "That file is not on this disk."
20030 IF EC = 8 THEN ER$ = "Bad disk or drive door open."
20040 IF EC = 9 THEN ER$ = "No more room on this disk."
20060 IF EC = 13 THEN ER$ = "That file is the wrong type -- check a catalog listing."
20070 IF EC = 6 AND EL = 950 THEN ER$ = "Put program disk in drive & try again."
20100 HOME : FOR X = 1 TO 3: PRINT CHR$(7);: NEXT : PRINT ER$: PRINT : PRINT "Line #"EL: PRINT : PRINT : PRINT
20120 CALL -3288: GOSUB 85
20130 ONERR GOTO 20000
20140 GOTO 100
Text found in Volume_287_8-Bit_Font_Editor.dsk/EDIT.bas:
5 LOMEM: 4096 *6
7 ONERR GOTO 20000
10 PRINT CHR$(4)"restore variables"
20 GOTO 1105
30 PRINT "Press any key...";: GET A$: RETURN
1105 PRINT CHR$(4)"bload y.table"
1106 PRINT D$"bload table": POKE 232,196: POKE 233,3: SCALE= 1: ROT= 0:FM = 1:N1 = 0: GOSUB 3200: GOTO 1135
1113 IF N1 THEN GOSUB 2950
1115 TEXT : HOME : PRINT "Select by eypress or SCII #? ";: GET A$: PRINT : PRINT :B$ = "KkAa" + CHR$(27) + CHR$(27): GOSUB 2900: IF K = 0 THEN 1115
1120 ON K GOTO 1130,1125,1210
1125 INPUT "ASCII # of char: ";A$:X = VAL(A$): IF X >255 THEN PRINT : GOSUB 9000: PRINT : GOTO 1125
1126 IF X < PEEK(AF) OR X > PEEK(AL) +1 THEN PRINT : GOSUB 9000: PRINT : GOTO 1125
1127 IF X = PEEK(AL) +1 THEN A = X: POKE CH,A: CALL CI: GOTO 1140
1128 A = X: GOTO 1135
1130 PRINT "Type the character: (ASCII #" PEEK(AF)"-" PEEK(AL)" only) ";: GET A$: PRINT A$:A = ASC(A$)
1133 IF A < PEEK(AF) OR A > PEEK(AL) THEN PRINT CHR$(7); CHR$(7);: HOME : VTAB 21: GOSUB 9000: GOTO 1115
1135 POKE CH,A: CALL CI: IF PEEK(CH) = PEEK(AF -1) THEN 1160
1140 HCOLOR= 3:H1 = 100:V1 = 2:C1 = 1: HGR : GOSUB 1143: GOTO 1210
1143 NB = PEEK(BT) +256 * PEEK(BT +1): IF NB <1 THEN 1400:
1150 FOR X = 1 TO PEEK(HT): POKE RO,X: CALL DR: HCOLOR= 0: HPLOT PEEK(BT),X TO PEEK(BT) +6,X: HCOLOR= 3: NEXT
1155 HPLOT 99,1 TO 100 +NB *2,1 TO 100 +NB *2, PEEK(HT) *2 +2 TO 99, PEEK(HT) *2 +2 TO 99,1: POKE AC,255: POKE LC,255
1157 X = 2 +2 *( PEEK(HT) - PEEK(FD)): HPLOT 96,X TO 99,X: HPLOT 100 +NB *2,X TO 103 +NB *2,X: RETURN
1160 HOME : VTAB 21: PRINT "Character " CHR$(A)" is 'missing.'": PRINT "Define it now? (y/n) ";: GET A$:B$ = "YyNn": GOSUB 2900: IF K = 0 THEN 1160
1163 ON K GOTO 1170,1115
1170 HOME : VTAB 21: PRINT "How many pixels wide do you want to start with? ";: INPUT "";X: IF X <1 OR X >95 THEN PRINT : GOSUB 9000: GOTO 1170
1173 IF PEEK(PP) AND (X > PEEK(PP)) THEN X = PEEK(PP): PRINT : PRINT PEEK(PP)" is the max in this font!": PRINT : GOSUB 30
1175 POKE CH,A: CALL NI
1180 FOR Y = 1 TO X: CALL MW: NEXT : POKE CH,A: CALL CI: HCOLOR= 3:H1 = 100:V1 = 2:C1 = 1: HGR : GOSUB 1143:N1 = 1
1210 HOME : VTAB 21: PRINT "Char: " CHR$(A);: HTAB 11: PRINT "ASC: "A;: HTAB 22: PRINT "Hgt: " PEEK(HT);: HTAB 32: PRINT "Wdth: "NB;: PRINT
1220 INVERSE : PRINT "VIEW OPTIONS";: NORMAL : PRINT " Char
1230 HTAB 3: FLASH : PRINT "H";: GOSUB 2940: PRINT "U";: NORMAL : PRINT " browse chars; Start Screen;"
1234 PRINT " opy char; Pick: ";
1240 GET A$:B$ = "SsEeCc" + CHR$(8) + CHR$(8) + CHR$(21) + CHR$(21) + CHR$(27) + CHR$(27): GOSUB 2900: IF K = 0 THEN PRINT CHR$(7): GOTO 1210
1260 ON K GOTO 1113,1995,1320,1270,1290,10000
1270 IF N1 THEN GOSUB 2950
1280 HGR :A = A -1: IF A < PEEK(AF) THEN A = PEEK(AF)
1285 GOTO 1135
1290 IF N1 THEN GOSUB 2950
1300 HGR :A = A +1: IF A > PEEK(AL) THEN A = PEEK(AL)
1310 GOTO 1135
1320 IF N1 THEN GOSUB 2950
1330 GOSUB 8000: GOTO 1210
1400 TEXT : HOME : PRINT "This char defined with image width of 0.Press to go back or any other key to widen it now: ";: GET A$: IF A$ = CHR$(27) THEN A = 65: POP : GOTO 1135
1410 PRINT : PRINT : INPUT "How many pixels wide? ";A$:X = VAL(A$): IF X <0 OR X >95 THEN PRINT : PRINT : GOSUB 9000: GOTO 1400
1420 Y = PEEK(PP): IF Y AND X >Y THEN X = Y: PRINT : PRINT "Max char width is "Y" and that's what": PRINT CHR$(A)" will be."
1430 FOR Y = 1 TO X: CALL MW: NEXT : POP : GOTO 1140
1995 IF M THEN 7000
2005 HOME : VTAB 21: INVERSE : PRINT "EDIT OPTIONS";: NORMAL : PRINT " har save; go back": HTAB 9: FLASH : PRINT "H";: GOSUB 2940: PRINT "U";: GOSUB 2940: PRINT "K";: GOSUB 2940: PRINT "J";: NORMAL : PRINT " move cursor; "
2006 HTAB 7: PRINT "<+>, <-> add, lose col.;"
2007 HTAB 8: FLASH : PRINT "@";: GOSUB 2940: PRINT "A";: NORMAL : PRINT " clear, set pixels";
2009 IF NOT M THEN XDRAW 1 AT H1,V1
2010 X = PEEK( -16384): IF X <128 THEN 2600
2020 POKE -16368,0
2030 IF X = 136 THEN GOSUB 2090: GOTO 2600: REM left
2040 IF X = 149 THEN GOSUB 2190: GOTO 2600: REM right
2050 IF X = 138 THEN GOSUB 2290: GOTO 2600: REM down
2060 IF X = 139 THEN GOSUB 2390: GOTO 2600: REM up
2070 IF X = 155 THEN 1210: REM
2071 IF X = 171 THEN GOSUB 2440: GOTO 2600: REM add col
2072 IF X = 173 THEN GOSUB 2460: GOTO 2005: REM lose col
2073 IF X = 195 OR X = 227 THEN GOSUB 2950: POKE CH,A: CALL CI: HGR : GOSUB 1143: GOTO 2005
2080 GOTO 2600: REM Apple
2089 REM Left
2090 XDRAW 1 AT H1,V1:H1 = H1 -2:C1 = C1 -1: IF H1 <100 THEN H1 = 100:C1 = C1 +1
2120 XDRAW 1 AT H1,V1: RETURN
2188 REM Right
2190 XDRAW 1 AT H1,V1:H1 = H1 +2:C1 = C1 +1: IF H1 >100 +NB *2 THEN H1 = 100 +NB *2:C1 = C1 -1
2220 XDRAW 1 AT H1,V1: RETURN
2288 REM Down
2290 XDRAW 1 AT H1,V1:V1 = V1 +2: IF V1 > PEEK(HT) *2 THEN V1 = PEEK(HT) *2
2320 XDRAW 1 AT H1,V1: RETURN
2388 REM Up
2390 XDRAW 1 AT H1,V1:V1 = V1 -2: IF V1 <2 THEN V1 = 2
2420 XDRAW 1 AT H1,V1: RETURN
2438 REM Add col
2440 ON NB = >89 GOTO 2457:Y = PEEK(PP): IF Y AND ( PEEK(BT) > = Y) THEN 2457
2455 GOSUB 3010: POKE AC,C1 -1: CALL MW: CALL CI:NB = PEEK(BT) +256 * PEEK(BT +1): HGR : GOSUB 1143: GOSUB 3010: HGR : GOSUB 1143: XDRAW 1 AT H1,V1: RETURN
2457 HOME : VTAB 21: PRINT "Can't go any wider": PRINT : GOSUB 30: RETURN
2458 REM Lose col
2460 CALL CI: CALL TC: IF PEEK(FA -1) THEN 2480
2465 IF (A = PEEK(AF -1)) OR ( PEEK(BT) = 1) THEN 2480
2470 GOSUB 3010: POKE LC,C1 -1: HGR : GOSUB 1143: GOSUB 3010: CALL MN: CALL CI:NB = PEEK(BT) +256 * PEEK(BT +1):C1 = C1 -1:H1 = H1 -2: HGR : GOSUB 1143: GOSUB 3000: RETURN
2480 HOME : VTAB 21: PRINT "Can't lose columns in this char.": PRINT : GOSUB 30: HGR : GOSUB 1143: RETURN
2600 IF PEEK( -16287) < = 127 THEN 2800
2603 IF H1 = 100 + PEEK(BT) *2 THEN PRINT CHR$(7);: GOSUB 2090: GOTO 2010
2605 XDRAW 1 AT H1,V1: HCOLOR= 3: GOSUB 2820
2800 IF PEEK( -16286) < = 127 THEN 2010
2810 XDRAW 1 AT H1,V1: HCOLOR= 0: GOSUB 2820: HCOLOR= 3: GOTO 2010
2820 HPLOT H1,V1 TO H1 +1,V1: HPLOT H1,V1 +1 TO H1 +1,V1 +1: HPLOT (H1 -98)/2 -1,V1/2: XDRAW 1 AT H1,V1: RETURN
2899 REM Key press choicer
2900 K = 0: FOR X = 1 TO LEN(B$)
2910 IF A$ = MID$ (B$,X,1) THEN K = X
2920 NEXT
2927 K = K/2: IF K < > INT(K) THEN K = INT(K) +1
2930 RETURN
2939 REM
2940 NORMAL : PRINT " ";: FLASH : RETURN
2949 REM Save char to aux
2950 IF ( NOT N1) OR ( PEEK(PP)) THEN 3000
2955 TEXT : HOME : PRINT "New character: " CHR$(A): PRINT : PRINT
2970 INPUT "Padding left of character: ";A$:X = VAL(A$): IF X > -1 THEN 2975
2974 POKE KN, ABS(X): POKE PL,0: PRINT : GOTO 2980
2975 POKE KN,0: POKE PL,X: PRINT
2980 INPUT "Padding right of character: ";A$:X = VAL(A$)
2985 IF X > -1 THEN POKE PR,X: POKE PR +1,0: GOTO 2990
2987 POKE PR +1, ABS(X): POKE PR,0
2990 CALL CI: CALL FC:N1 = 0: GOTO 3005
3000 HOME
3005 VTAB 21: PRINT "Saving " CHR$(A)" to memory only..."
3010 FOR X = PEEK(HT) TO 1 STEP -1: POKE RO,X: CALL SR: NEXT : RETURN
3199 REM Prptnl y/n
3200 IF PEEK(PP) < >255 THEN RETURN
3210 HOME : PRINT "Is this new font
roportional or onproportional? ";: GET A$:B$ = "PpNn": GOSUB 2900: IF K = 0 THEN PRINT CHR$(7): GOTO 3210
3220 ON K GOTO 3230,3250
3230 POKE PP,0: RETURN
3250 PRINT : PRINT : INPUT "Enter the width of these non- proportional characters: ";A$:X = VAL(A$): IF X <0 OR X >95 THEN PRINT CHR$(7): PRINT "Out of range--try again...": PRINT : GOTO 3250
3260 POKE PP,X: RETURN
4000 HCOLOR= 0: DRAW 1 AT H1,V1
4050 PRINT D$"pr#4": PRINT CHR$(1);: PRINT D$"in#4": PRINT D$"pr#0":H2 = 100:V2 = 2
4055 HOME : VTAB 22: INVERSE : PRINT "DRAW OPTIONS";: NORMAL : PRINT " Move mouse to move cursor,";
4056 HTAB 9: PRINT "Click to draw, ";: FLASH : PRINT "@";: NORMAL : PRINT " to erase,"
4057 HTAB 13: PRINT " to go back";
4058 XDRAW 1 AT H1,V1: HCOLOR= 3
4060 INPUT "";X,Y,B: VTAB 1: XDRAW 1 AT H1,V1:H1 = INT(H2 +X/3):V1 = INT(V2 +Y/5): IF H1/2 < > INT(H1/2) THEN H1 = H1 -1
4080 IF V1/2 < > INT(V1/2) THEN V1 = V1 -1
4082 IF H1 <100 THEN H1 = 100
4084 IF H1 >100 +NB *2 THEN H1 = 100 +NB *2
4086 IF V1 <2 THEN V1 = 2
4088 IF V1 > PEEK(HT) *2 THEN V1 = PEEK(HT) *2
4100 XDRAW 1 AT H1,V1: ON B < >1 GOTO 5000: IF H1 = 100 + PEEK(BT) *2 THEN PRINT CHR$(7);: GOTO 5000
4420 XDRAW 1 AT H1,V1: GOSUB 2820: GOTO 4060
5000 Z = PEEK( -16384): ON Z <128 GOTO 5100: POKE -16368,0: IF Z = 155 THEN PRINT D$"in#0": GOTO 7000
5100 ON PEEK( -16286) >127 GOTO 5115: GOTO 4060
5115 IF H1 = 100 + PEEK(BT) *2 THEN PRINT CHR$(7);: GOTO 4060
5120 XDRAW 1 AT H1,V1: HCOLOR= 0: GOSUB 2820: HCOLOR= 3: GOTO 4060
7000 HOME : VTAB 21: INVERSE : PRINT "MOUSE OPTIONS";: NORMAL : PRINT " Save haracter,"
7010 PRINT "raw, <+>, <-> add, lose column,";
7020 PRINT " return to View Options ";
7030 GET A$:B$ = "CcDd++--" + CHR$(27) + CHR$(27): GOSUB 2900: IF K = 0 THEN PRINT CHR$(7): GOTO 7000
7040 ON K GOTO 7050,4000,7060,7070,1210
7050 GOSUB 2950: POKE CH,A: CALL CI: GOTO 1140: REM Save char
7060 C1 = (H1 -98)/2: GOSUB 2440: GOTO 7000: REM Add col
7070 C1 = (H1 -98)/2: GOSUB 2460: GOTO 7000: REM Lose col
8000 HOME : VTAB 21: PRINT "Copy above character to which 'missing' character? (specify by ASCII code # or just press to go back) ";: INPUT "";A$: IF A$ = "" THEN RETURN
8010 X = VAL(A$): IF X < PEEK(AF) OR X > PEEK(AL) THEN HOME : VTAB 21: PRINT "Error--out of range...(#" PEEK(AF)"-" PEEK(AL)" only)": PRINT : GOSUB 30: GOTO 8000
8020 Y = PEEK(BT)
8030 POKE CH,X: CALL CI: IF PEEK(CH) < > PEEK(AF -1) THEN HOME : VTAB 21: PRINT "Error--copy to 'missing' chars only...": PRINT : GOSUB 30: POKE CH,A: GOTO 8000
8040 POKE CH,X: CALL NI:A = X
8050 FOR X = 1 TO Y: CALL MW: NEXT : GOSUB 3010:N1 = 1
8060 RETURN
9000 PRINT CHR$(7)"Error--out of range": FOR X = 1 TO 2500: NEXT : RETURN
10000 IF N1 THEN GOSUB 2950
10005 PRINT D$"store variables"
10010 PRINT D$"run a2fe,@90"
20000 POKE 216,0:EC = PEEK(222):EL = PEEK(218) + PEEK(219) *256:ER$ = "Unexpected error #" + STR$(EC)
20100 TEXT : HOME : FOR X = 1 TO 3: PRINT CHR$(7);: NEXT : PRINT ER$: PRINT : PRINT "Line #"EL: PRINT : PRINT : PRINT
20120 CALL -3288: GOSUB 30
20130 ONERR GOTO 20000
20140 GOTO 1113
Text found in Volume_287_8-Bit_Font_Editor.dsk/Instructions.txt:
____________________________________________
| |
| The 8-Bit IIgs Font Editor |
| |
| by John G. Thomas |
| |
| Ewing (New Jersey) Apple Users Group |
| |
| Instruction Manual |
| |
| Version 1.0 |
| |
|____________________________________________|
The 8-Bit IIgs Font Editor Manual---page [Page#]
Shareware
The 8-Bit IIgs Font Editor is sophisticated and powerful. It is designed to let you create and edit fonts (called Apple IIgs fonts) for use with Apple IIgs applications and SuperFonts. It is distributed as shareware. Please try it for 2 weeks and pass it around to others. If you care to continue using it, please send $20 to the author:
John G. Thomas
38 Sunnybrae Blvd.
Trenton, NJ 08620
If not, please destroy your copy or give it someone else. When I receive your payment, I will send you the latest program update. You may copy this disk and give it to others for demonstration. Thank you for sending your payment. Your honesty will allow me to distribute future programs in this same low-cost way.
Requirements
This program will only work on an Apple IIgs, AppleIIc, or enhanced, 128K AppleIIe. Any combination of disk drives may be used. A single 5.25" drive will be adequate, although larger capacity drives certainly make using it more convenient. There is no provision in the program for specifying data disk location by slot and drive, therefore some familiarity with ProDOS prefixes is necessary. The graphic cursor in the editor may be controlled via the keyboard or a mouse, which is more efficient. AppleIIe owners MUST have the mouse interface card in slot 4.
A chart showing the ASCII value of each character will be necessary to specify characters by number in some parts of this program.
Ramdrive users: This program removes the ramdrive (slot 3, drive 2) that ProDOS builds in 128K machines because of its conflicting contention for auxiliary memory. It works fine, however, with Applied Engineering's PRODRIVE ramdrive, with the ramdrive programs on Glen Bredon's ProSel, and with Ramfactor style ramdrives. For maximum efficiency, transfer all the Binary and BASIC files from the /A2FE disk to your ramdrive volume.
Getting Started
To make the 8-Bit IIgs Font Editor a self-starting (autoboot) disk, the files PRODOS and BASIC.SYSTEM must be copied to the disk using a file copy utility such as CAT.DOCTOR or UTIL.SYSTEM.
Background
Fonts for Apple IIgs applications use a format borrowed from the world of Macintosh computers. All of the fonts available for use with a IIgs were, I believe, created using a Macintosh and converted to AppleIIgs font format using conversion software that runs on Macintosh computers. The conversion process just adds a handful of extra header fields and reverses the high-low order of the bytes of the word-long header integers that describe the font and those that locate the characters that compose the font.
My only sources of information were the AppleIIgs Toolbox Reference (Volume 2), "Fonts and text in QuickDraw II," and my own notes generated from my experimenting. The font format is complex and allows great freedom and variety in the creation of fonts.
Using the Menus
The program is menu-driven for the most part, and a typical menu item will appear as:
View or dit character images
The bracketed character, in this case, indicates how this option may be selected with a single key press--just press the 'E' key. Upper case and lower case are treated equally for menu input.
Start Screen Options
View or dit character images
This option takes the user to the editor where the character images may be created, viewed, or edited. This option only works if there is a font in memory when you choose it. Either go to the File stuff menu and load a font or Make a new font from scratch. Then you'll be able to View or Edit
the character images of that font.
Make a ew font from scratch
Press to create a new font. See below for more information.
Toggle nput device
Graphic input is collected by the editor via the keyboard or a mouse. "Keyboard" is the default choice, so if there's a mouse in your house, press to select it for this session.
ile stuff, font file facts
From here you can load and save font files, catalog the current data disk, specify a prefix for data storage and retrieval, see a chart of facts about the font currently in memory, or escape back to the Start Screen.
The font facts available here include:
- Family name
- Family number
- Size
- File length in bytes
- The ASCII value of the first definable character
- The ASCII value of the last definable character
- The width (including padding on right) of the widest
character
- Maximum leftward kern (see below about padding)
- Font ascent: maximum allowed height above the base
line (in pixels)
- Font descent: maximum allowed distance below the base
line (again, in pixels); ascent + descent = size
- Leading: the recommended number of blank pixel rows
between the descent row of one line of text and
the ascent row of the next
- Style byte: QuickDraw II checks this value before
applying boldfacing or italicizing when called to
do so; the field indicates whether the
requested style is already part of the font:
Style byte Indicates
0 Bold facing and underlining
may be determined by
application
1 Font pre-boldfaced
2 Font pre-underlined
3 Font pre-boldfaced and
pre-underlined
- Proportional (y/n): Apple IIgs fonts may be proportional or not. Characters in a proportional font are only as wide as they need to be, so, for example, the letter 'i' is usually narrower than the letter 'm.' Text printed with proportional characters is often more attractive than when printed using non-proportional characters which are all of the same width. The advantage of these non-proportional characters is that they make it easy to print tables and other columnar output.
In order to facilitate adjustments to edited characters, this font editor always tries to distinguish whether the current font is proportional or not. It does this first by comparing the widths of lower case 'i' with lower case 'm,' then upper case 'I' with upper case 'M,' then by just asking the user if the font is supposed to be proportional or not, and if non-proportional, what the the standard character width is for the font. This means that, until the characters 'i' and 'm' or 'I' and 'M' are created, you must keep track of this information yourself. It is possible to create or edit a font that mixes proportional with non-proportional characters, but it will always be dealt with as a proportional type font by this program.
uit to ProDOS...to ASIC
Remember to save your font, if it's new or if you've made new changes to it (including changes to the padding) before pressingor because a font in memory will be gone when you do!
Edit character
adding
Apple IIgs fonts have a table that keeps information for each character which indicates how that character should be positioned with respect to the current "pen location," and how far to advance the pen after drawing it. This editor translates this as padding left of and padding right of the character. The idea of "padding" is stretched a bit here because "negative padding" is allowed so that characters may be drawn leaning into their neighbors' space on either side. (When this occurs on the left side, it is called "kerning.")
When you choose to Edit character Padding, you can reset those values for any characters already created in the font in memory. This option only works with proportional fonts because the padding values in a non-proportional font are calculated by the editor to keep each character in the center of its space.
Specify each character you want to edit here by its ASCII value. That character's text value, image width (adjustable within the image editor), and current right and left padding values will be displayed. Press or to change the padding values which may range from -254 to 254.
Create a New Font
When you choose to Make a New font from scratch, you will come to a screen wherein you define the attributes of a new font. Enter each one or just press to accept the default if one is suggested.
Font Family Name and Number
Fonts of the same type face but with different sizes (size=height in pixel rows) constitute font families. For example, the Medici.9, .10, .12, .18, and .24 fonts together comprise the Medici font family. Each font family has a unique family number which can range from 0 to 65,000. Numbers 0 to 512 are reserved for Apple-assigned fonts and the others are for arbitrary assignment by font developers. In general, if you are creating a font of a new size of an existent font family, keep the same name and number. If you think you are creating a brand new family, choose a number higher than 512. When you enter the name, capitalize the first letter of it.
Proportional
If you choose to create a non-proportional font, you will later be asked for the "Non-proportional character width constant." This is the width in pixels that each character will take up in a line of text--not its image width. The image width of non-proportional characters may range from 1 to the non-proportional character width constant of the font. Remember to keep track of this value at least until 'i' and 'm' or 'I' and 'M' are created.
Point size (Height)
Note that 72 is the upper limit for this editor. 6 would be a "tiny" size and anything smaller would be hard to make recognizable characters in.
Descent
Associated with every character in a single font is an imaginary, common line called the base line. This separates the ascent portion of the character from the descent. Most characters don't have a part that descends below the base line (called a descender), but in most fonts, letters like 'j' and 'p' do. Enter a value that's just enough pixel rows to accommodate the lowest descent of any character.
Leading and Style
(See discussion above)
After the font is created, you may return to the Start Screen and save it to disk or go directly to the editor and begin to create characters.
Using the Editor
You should settle the mouse/keyboard situation at the Start Screen before coming to the editor. When you choose to View or Edit character images, the editor program is loaded and the font in memory is tested for proportionality. If this cannot be determined, you will be asked if the font is proportional, and, if not, you will also be asked for the non-proportional character width constant. The editor will then try to display the letter 'A' or the current character. If this character has not been defined yet, you will be asked if you want to define it.
Defining a new character
You will be asked how many pixels wide you want to start with. This question refers to the image width of the character. An estimation will be close enough here because image widths may be widened or made narrower via the Add and Lose Columns option. Enter your choice of image width and after a little while, you will come to the View Options screen with an empty Edit Box near the top of the screen. The Edit Box has little tabs on either side indicating the (common) base line of the font. The graphic cursor may be moved around inside the box with the current input device. Use the Edit Options to draw the character. Be sure that the image in the Edit Box does not include any padding to the left or right of the character. That is, the image should extend from one wall of the Edit Box to the other. Choose to save the character. Proportional characters require more input regarding padding; the padding of non-proportional characters is calculated by the program. You should return to the Start Screen (File stuff) and save the font to disk each time after defining a few characters. Fonts are usually named as the family name, a period, and a number for the point size.
View Options
Here you may Select another character to work with by key press or ASCII value, move to the Edit Options, browse through the characters of the font using the left and right arrow keys, escape to the Start Screen, or Copy the current character to an as yet undefined character. (You must know the ASCII value of the new character in order to copy an image to it.)
Edit Options (keyboard control)
If you are using the keyboard to edit characters, you have the following options:
- haracter save: writes the version of the character shown on the screen to the font in memory. Note--this does not save the font onto the data disk!
- Move the cursor with the arrow keys one pixel at a time.
- Add a column <+>, or lose one <-> at the current column position of the cursor. Note--there will be instances when you will not be able to lose columns: never in the case of the font's "missing character" symbol (see discussion below), and not when the current character is "too close" to the missing character. Note, also--to add a column at the right of a character, move the cursor into the right boundary of the Edit Box and press <+>.
- Turn a pixel on with the open apple key or turn a pixel off with the solid apple key.
- Escape back to the View Options screen.
Missing character notes: When a font is first created, the ASCII value of the first and last characters that it may contain are determined. This editor provides an ASCII range of 0 to 254. Some fonts, you may notice, have different ranges of ASCII availability. Defined immediately after the last character, there will be the "missing character" which applications use in a line of text to represent undefined characters in that font. This missing character may be edited with this editor except in the case where it has an ASCII value that is higher than 255. To select this character, choose Select from the View Options, and 'by ASCII' from the Select screen. The default missing character is a rectangle, but many font developers like to personalize the font with a custom missing character.
Mouse Options
- Character ave, Add <+>, lose <-> columns, and Escape back to the View Options work the same as when using the keyboard for input.
- raw takes you to the Draw Options screen
Draw Options
Use the mouse to move the graphic cursor in the Edit Box, as with the arrow keys in keyboard mode. Click the mouse button to turn on a pixel. Press the solid apple key turn off a pixel.
Revision List
Version 1.0 (January 15, 1989):
- "Sorry..." message in Startup program changed to all capitals.
- Improved mouse response
- Fixed bug in 'defined, 0-width character' routine
- Improved frequency of editor asking if font proportional or not
Text found in Volume_287_8-Bit_Font_Editor.dsk/NEWSTUFF.bas:
10 LOMEM: 4096 *6
20 REM Newstuff--create a new font
30 PRINT CHR$(4)"restore variables"
100 RESTORE : TEXT : HOME : POKE 49167,0
110 FLASH : HTAB 9: PRINT "]";: NORMAL : PRINT " Create a New Font ";: FLASH : PRINT "]": NORMAL
120 PRINT : PRINT
125 INPUT "Font Family Name: ";A$(1)
128 INPUT "Font Family Number: ";A$(2)
129 PRINT
130 PRINT "Enter each attribute of your new font or press to accept my suggested default.": PRINT
140 PRINT "ATTRIBUTE";: HTAB 20: PRINT "RANGE DEFAULT VALUE";
150 PRINT "~~~~~~~~~~~~~~~~~~ ~~~~~~ ~~~~~~~~ ~~~~~";
160 X = 3:V = 13
170 READ A$,R$,DF$
175 IF A$ = "x" THEN 203
180 PRINT A$;: HTAB 20: PRINT R$;: HTAB 27: PRINT DF$;: HTAB 36: INPUT "";A$(X)
185 IF A$(X) < >"" THEN 200
187 A$(X) = DF$: IF X < >5 THEN 198
190 A5 = VAL(A$(4)):B = INT(A5/6):A$(X) = STR$(B)
198 VTAB V: HTAB 36: PRINT A$(X);: PRINT
200 X = X +1:V = V +1: GOTO 170
203 A$ = LEFT$(A$(3),1): IF A$ < >"y" AND A$ < >"Y" THEN 206
204 Z = 0: GOTO 210
206 A5 = VAL(A$(4))
207 VTAB V: HTAB 1: PRINT "Non-proportional": PRINT " character width": PRINT " constant";: HTAB 20: PRINT "?";: HTAB 27:B = INT((A5/12) *7): PRINT B;: HTAB 36: INPUT "";A$(X): IF A$(X) = "" THEN A$(X) = STR$(B): VTAB V +2: HTAB 36: PRINT A$(X);: PRINT
208 Z = VAL(A$(X))
210 VTAB 22: PRINT "Is all of the above correct? (y/n): ";: GET A$:B$ = "YyNn": GOSUB 2900: IF K = 0 THEN VTAB 22: HTAB 1: CALL -958: GOTO 210
220 ON K GOTO 230,100
230 HOME : VTAB 21: HTAB 16: PRINT "Working..."
235 A5 = LEN(A$(1)): POKE BUF,A5
240 FOR X = 1 TO A5: POKE BUF +X, ASC( MID$ (A$(1),X,1)): NEXT
250 A5 = VAL(A$(2)): POKE F1,A5 - INT(A5/256) *256: POKE F1 +1, INT(A5/256): REM famFum
260 POKE PP,Z: IF Z = 0 THEN POKE M5, VAL(A$(7)): POKE M4,0: GOTO 280
270 POKE M4,0: POKE M5,0: REM MaxChWid, MaxLKern
280 H = VAL(A$(4)): POKE HT,H: REM Height
290 Y = VAL(A$(5)): POKE FD,Y: REM FDescent
300 POKE FA,H -Y: REM FAscent
320 POKE ST, VAL(A$(7)): REM Style
330 POKE LG, VAL(A$(6))
340 POKE CL,0: POKE CL +1,0:X = INT(( PEEK(HT) *7)/12): IF X >15 THEN X = 15
350 POKE BT,X: PRINT D$"bload y.table"
400 CALL NS: REM ML NewStuff
410 HGR : HCOLOR= 3
430 HPLOT 0,1 TO X -1,1 TO X -1,H TO 0,H TO 0,1: REM Missing Char--a box
460 FOR X = 1 TO PEEK(HT)
470 POKE RO,X: CALL SR
480 NEXT
490 X = 1066 +( PEEK(HT) *2) + LEN(A$(1))
500 POKE LF,X - INT(X/256) *256: POKE LF +1, INT(X/256): REM EOF
600 TEXT : HOME : PRINT "Your new font is in memory and ready for editing. Do you want to": PRINT : PRINT : PRINT " Return to the
610 PRINT "Choose one: ";: GET A$:B$ = "SsEe": GOSUB 2900: IF K = 0 THEN PRINT CHR$(7): GOTO 600
620 FM = 1: PRINT D$"store variables"
630 ON K GOTO 640,650
640 PRINT D$"run a2fe,@90"
650 CALL FI: PRINT D$"run edit"
2899 END
2900 K = 0: FOR X = 1 TO LEN(B$)
2910 IF A$ = MID$ (B$,X,1) THEN K = X
2920 NEXT
2930 K = K/2: IF K < INT(K) THEN K = INT(K) +1
2940 RETURN
5000 DATA Proportional,yes/no,yes
5020 DATA Point size (Hgt.),6-72,12
5030 DATA Descent,?,Hgt / 6
5040 DATA Leading,?,0
5050 DATA Style,0-3,0
6000 DATA x,x,x
Text found in Volume_287_8-Bit_Font_Editor.dsk/RAMOUT.txt:
Offset Hex Data Characters
======= ================================================ =================
$000000 08 78 AD 98 BF 29 30 C9 30 D0 4D AD 26 BF CD 10 .x-.?)0I 0PM-&?M.
$000010 BF D0 08 AD 27 BF CD 11 BF F0 3D AC 31 BF B9 32 ?P.-'?M. ?p=,1?92
$000020 BF 29 F3 C9 B3 F0 05 88 10 F4 30 2C B9 32 BF 8D ?)sI3p.. .t0,92?.
$000030 5C 03 B9 33 BF 99 32 BF F0 03 C8 D0 F5 AD 26 BF \.93?.2? p.HPu-&?
$000040 8D 5A 03 AD 27 BF 8D 5B 03 AD 10 BF 8D 26 BF AD .Z.-'?.[ .-.?.&?-
$000050 11 BF 8D 27 BF CE 31 BF 28 60 00 00 00 .. .. .. .?.'?N1? (`...
** END **
Text found in Volume_287_8-Bit_Font_Editor.dsk/STARTUP.bas:
10 REM startup
20 HOME
30 HTAB 7: PRINT "The 8-Bit IIgs Font Editor": PRINT : PRINT
40 PRINT "PLEASE COPY THIS DISK AND": PRINT "GIVE IT TO EVERYONE YOU KNOW!": PRINT
50 PRINT "It is legal to copy and distribute this disk. However, to legally use the font editor program on this disk, you must send payment within 2 weeks."
60 PRINT : PRINT "Please send $20 directly to:": PRINT : PRINT " John G. Thomas": PRINT " 38 Sunnybrae Blvd.": PRINT " Trenton, NJ 08620": PRINT
70 PRINT "You will receive a new disk with the latest version of the program. Your honesty will help me distribute future programs in this same, low-cost way."
100 IF PEEK(64435) < >6 THEN 400: REM IIe or later
110 IF PEEK(64448) = 234 THEN 400: REM Enhanced
120 FOR X = 768 TO 777: READ V: POKE X,V: NEXT : CALL 768: IF PEEK(777) < >48 THEN 400: REM 128K
130 PRINT CHR$(4)"-ramout": REM Remove ProDOS' slot 3 drv 2 ramdisk
199 PRINT : PRINT "Press any key...";: GET A$
200 D$ = CHR$(4)
300 PRINT D$"-a2fe"
400 HOME : PRINT "This program needs an Apple IIGS, IIc, or an enhanced Apple IIe with 128K.": PRINT : PRINT : PRINT "Sorry."
500 DATA 173,152,191,41,48,141,9,3,96,0
Text found in Volume_287_8-Bit_Font_Editor.dsk/TABLE.txt:
Offset Hex Data Characters
======= ================================================ =================
$000000 01 00 08 00 0C 00 00 00 39 2E 4C 00 .. .. .. .. ........ 9.L.
** END **
Text found in Volume_287_8-Bit_Font_Editor.dsk/Y.TABLE.txt:
Offset Hex Data Characters
======= ================================================ =================
$000000 20 24 28 2C 30 34 38 3C 20 24 28 2C 30 34 38 3C $(,048< $(,048<
$000010 21 25 29 2D 31 35 39 3D 21 25 29 2D 31 35 39 3D !%)-159= !%)-159=
$000020 22 26 2A 2E 32 36 3A 3E 22 26 2A 2E 32 36 3A 3E "&*.26:> "&*.26:>
$000030 23 27 2B 2F 33 37 3B 3F 23 27 2B 2F 33 37 3B 3F #'+/37;? #'+/37;?
$000040 20 24 28 2C 30 34 38 3C 20 00 00 00 00 00 00 00 $(,048< .......
$000050 00 80 80 80 80 80 80 80 80 00 00 00 00 00 00 00 ........ ........
$000060 00 80 80 80 80 80 80 80 80 00 00 00 00 00 00 00 ........ ........
$000070 00 80 80 80 80 80 80 80 80 00 00 00 00 00 00 00 ........ ........
$000080 00 80 80 80 80 80 80 80 80 28 28 28 28 28 28 28 ........ .(((((((
$000090 28 A8 .. .. .. .. .. .. .. .. .. .. .. .. .. .. ((
** END **
- Addeddate
- 2014-07-10 05:53:12
- Emulator
- apple2e
- Emulator_ext
- dsk
- Identifier
- riag_006_Volume_287_-_8-Bit_Font_Editor
- Scanner
- Internet Archive Python library 0.6.5