---FORMAT.200 (c)1991 R.W.Hess--- This file contains two programs: FMTLDR.BA - creates FORMAT.CO FORMAT.BA - loads FORMAT.CO prt codes READ THE DOCs IN FORMAT.DX1&2 FIRST! Download this file as FORMAT.DO. Print at least these instruction lines and BACK-UP FORMAT.DO to some other media BEFORE proceeding! Remember that the program lines referred to in these instructions are the numbered lines between the horizontal dashes. Because of the size of FMTLDR.BA, I have included here a rather detailed discussion of the creation process for FMTLDR.BA, FORMAT.CO and FORMAT.BA. Although there are other ways to achieve the same results, this is easy and it works! The instructions direct you to checksum each of the files as .DO files BEFORE you run them. Although FMTLDR.BA does have its own checksum routines, there is always the chance that an error occurred in the internal downloaded values. FORMAT.BA does NOT have any internal checksum routine and it is CRUCIAL that no errors occur in its creation! If repeated tries show an incorrect checksum, a new download may be needed. (The Data Libraries contain a number of checksum programs: one of these should be part of your "utility" library.) With FORMAT.DO on the menu, you should have at least 5,000 bytes of free RAM before beginning. - Start by entering BASIC and typing CLEAR:NEW followed by to clean out the Basic and Paste buffers - Enter FORMAT.DO and use F6 to "Cut" the program code for FMTLDR.BA into the Paste Buffer. - Return to menu and "Kill" FORMAT.DO. - Open a new TEXT file named FMTLDR.DO and "Paste" the FMTLDR code into it. - Checksum FMTLDR.DO: proceed ONLY if the checksum is 333,052! - Enter BASIC and type CLEAR:NEW press - "Load" FMTLDR.DO (1 1/2 minutes) - "Save" it as FMTLDR.BA and back-it-up - "Run" FMTLDR.BA to create FORMAT.CO: about 30 sec. Back-up FORMAT.CO - "Kill" FMTLDR.DO and FMTLDR.BA - Enter BASIC and type CLEAR:NEW press - Reload FORMAT.DO into RAM. - Enter FORMAT.DO and "Cut" the "FORMAT.BA" code into the Paste Buffer. - "Kill" FORMAT.DO - Open a new file called FRMT.DO and "Paste" the FORMAT.BA code into it. - Checksum FRMT.DO: proceed ONLY if the checksum is 216,052! - Enter BASIC and type CLEAR:NEW press - "Load" FRMT.DO - "Save" it as FORMAT.BA and back-it-up - "Kill" FRMT.DO Section V of the DOCs, "Customizing FORMAT", explains when and how to use FORMAT.BA. ---------- FMTLDR.BA ---------------- 1 '************************ 2 '* Loader by COTOBA.BA * 3 '* Copyright (c) 1989 * 4 '* Paul Globman * 5 '* * 6 '* FORMAT.CO * 7 '* Program code (c)1991 * 8 '* R.W.Hess * 9 '************************ 12 FOR I = 63408 TO 64687 20 READ X:POKE I,X:SM=SM+X 30 NEXT 40 IF SM = 165820 THEN 60 50 PRINT"error in data":STOP 60 SAVEM"FORMAT.CO", 63408 , 64687 , 63455 :MENU 1000 DATA 205,23,155,195,164,103,245 1010 DATA 122,214,124,194,233,20,56 1020 DATA 8,235,249,50,96,239,195 1030 DATA 124,248,33,0,0,9,17 1040 DATA 178,248,1,126,1,205,22 1050 DATA 131,17,82,255,14,120,205 1060 DATA 22,131,195,178,248,205,23 1070 DATA 155,33,209,255,34,61,245 1080 DATA 33,215,255,34,19,245,205 1090 DATA 94,248,1,33,0,8,235 1100 DATA 6,47,33,209,255,205,186 1110 DATA 65,205,42,42,205,62,79 1120 DATA 195,157,113,194,146,248,245 1130 DATA 33,14,24,205,155,79,241 1140 DATA 254,82,202,224,248,205,254 1150 DATA 109,49,115,116,32,112,103 1160 DATA 35,0,205,246,84,5,194 1170 DATA 209,248,42,67,246,34,6 1180 DATA 239,195,19,123,35,205,22 1190 DATA 9,123,167,50,205,255,1 1200 DATA 244,0,195,232,255,205,254 1210 DATA 109,82,101,97,100,35,0 1220 DATA 205,246,84,35,205,22,9 1230 DATA 123,50,204,255,62,82,245 1240 DATA 1,234,2,195,232,255,17 1250 DATA 203,247,42,99,246,235,14 1260 DATA 6,19,197,213,229,205,17 1270 DATA 110,194,118,248,235,209,209 1280 DATA 209,201,225,209,193,195,103 1290 DATA 248,205,94,248,34,233,255 1300 DATA 40,54,229,6,87,33,166 1310 DATA 248,205,186,65,225,40,213 1320 DATA 235,233,205,25,159,254,27 1330 DATA 202,200,248,254,68,202,246 1340 DATA 248,254,80,202,169,248,254 1350 DATA 82,205,254,109,27,89,38 1360 DATA 44,101,114,58,32,70,88 1370 DATA 45,56,48,32,27,89,45 1380 DATA 55,82,47,68,47,80,0 1390 DATA 195,146,248,0,175,50,204 1400 DATA 255,50,203,255,60,50,96 1410 DATA 239,62,0,167,202,217,248 1420 DATA 33,77,255,17,143,255,1 1430 DATA 6,0,9,223,202,217,248 1440 DATA 229,205,250,249,225,195,201 1450 DATA 248,33,23,250,126,70,167 1460 DATA 196,6,250,42,82,240,235 1470 DATA 213,205,221,124,205,190,124 1480 DATA 209,58,28,239,79,197,205 1490 DATA 208,124,175,50,95,239,205 1500 DATA 169,126,213,17,127,241,26 1510 DATA 50,207,255,254,127,218,119 1520 DATA 249,254,141,194,29,249,58 1530 DATA 43,239,33,123,241,150,31 1540 DATA 205,211,124,195,121,249,254 1550 DATA 130,202,39,249,254,140,194 1560 DATA 53,249,205,62,79,209,193 1570 DATA 122,163,60,202,137,249,195 1580 DATA 163,249,254,154,194,69,249 1590 DATA 58,203,255,238,1,50,203 1600 DATA 255,195,121,249,229,213,197 1610 DATA 33,76,255,17,142,255,1 1620 DATA 6,0,9,223,202,103,249 1630 DATA 58,207,255,190,194,81,249 1640 DATA 35,126,254,8,218,109,249 1650 DATA 205,250,249,193,209,225,195 1660 DATA 121,249,71,246,8,119,205 1670 DATA 6,250,195,103,249,26,231 1680 DATA 42,125,241,19,223,194,1 1690 DATA 249,209,193,122,163,60,194 1700 DATA 144,249,60,50,204,255,195 1710 DATA 163,249,13,202,173,249,58 1720 DATA 203,255,167,202,242,248,205 1730 DATA 62,79,13,194,242,248,12 1740 DATA 13,202,173,249,205,62,79 1750 DATA 195,163,249,58,23,239,71 1760 DATA 58,28,239,128,47,60,71 1770 DATA 58,33,239,167,202,230,248 1780 DATA 128,71,58,205,255,167,120 1790 DATA 202,237,249,254,4,218,237 1800 DATA 249,214,4,205,198,124,33 1810 DATA 38,239,58,43,239,31,134 1820 DATA 205,211,124,213,33,205,255 1830 DATA 52,110,45,38,0,205,11 1840 DATA 71,209,62,4,205,198,124 1850 DATA 58,204,255,167,194,84,124 1860 DATA 195,230,248,126,230,247,119 1870 DATA 1,60,0,9,126,167,200 1880 DATA 71,35,126,231,5,194,6 1890 DATA 250,201,0,0,0,0,0 1900 DATA 0,0,0,0,1,12,0 1910 DATA 0,0,0,0,0,0,0 1920 DATA 0,0,0,0,0,0,0 1930 DATA 0,0,0,0,0,0,0 1940 DATA 0,149,2,27,69,0,0 1950 DATA 132,1,15,0,0,0,142 1960 DATA 2,27,52,0,0,150,2 1970 DATA 27,77,0,0,128,2,27 1980 DATA 80,0,0,137,2,27,12 1990 DATA 0,0,139,3,27,83,0 2000 DATA 0,145,3,27,45,1,0 2010 DATA 148,1,14,0,0,0,131 2020 DATA 3,27,83,1,0,0,2 2030 DATA 27,70,0,0,0,1,18 2040 DATA 0,0,0,0,2,27,53 2050 DATA 0,0,0,2,27,77,0 2060 DATA 0,0,2,27,77,0,0 2070 DATA 0,3,27,112,0,0,0 2080 DATA 2,27,84,0,0,0,3 2090 DATA 27,45,0,0,0,1,20 2100 DATA 0,0,0,0,2,27,84 2110 DATA 0,0,241,254,68,202,82 2120 DATA 255,175,50,206,255,205,99 2130 DATA 79,205,77,79,175,50,203 2140 DATA 255,60,71,50,11,242,42 2150 DATA 82,240,235,58,206,255,167 2160 DATA 55,196,77,79,212,140,255 2170 DATA 58,204,255,167,202,232,248 2180 DATA 144,194,232,248,50,204,255 2190 DATA 205,254,109,27,113,13,10 2200 DATA 80,103,58,0,104,38,0 2210 DATA 197,213,205,11,71,205,62 2220 DATA 79,209,193,4,58,28,239 2230 DATA 79,197,205,141,79,205,253 2240 DATA 249,175,50,95,239,205,169 2250 DATA 126,213,1,7,0,17,127 2260 DATA 241,26,254,130,202,37,249 2270 DATA 254,140,194,44,249,209,193 2280 DATA 14,1,195,193,249,254,154 2290 DATA 194,60,249,58,203,255,238 2300 DATA 1,50,203,255,195,182,249 2310 DATA 254,141,194,91,249,58,43 2320 DATA 239,33,123,241,150,31,111 2330 DATA 58,206,255,167,194,85,249 2340 DATA 125,205,211,124,125,128,71 2350 DATA 195,182,249,26,254,127,210 2360 DATA 182,249,58,206,255,167,202 2370 DATA 166,249,26,254,9,194,116 2380 DATA 249,120,129,71,14,7,175 2390 DATA 254,32,218,126,249,121,61 2400 DATA 230,7,79,26,254,33,218 2410 DATA 183,249,213,58,38,239,131 2420 DATA 128,214,126,245,58,23,239 2430 DATA 95,58,28,239,131,56,6 2440 DATA 235,150,60,95,241,87,197 2450 DATA 205,118,141,193,209,195,183 2460 DATA 249,58,204,255,167,194,183 2470 DATA 249,26,231,58,7,239,61 2480 DATA 204,136,79,5,42,125,241 2490 DATA 19,223,194,26,249,209,193 2500 DATA 122,163,60,194,205,249,205 2510 DATA 31,250,195,191,248,33,203 2520 DATA 255,121,150,202,236,249,79 2530 DATA 58,204,255,167,194,232,249 2540 DATA 58,206,255,167,194,232,249 2550 DATA 150,196,62,79,13,194,5 2560 DATA 249,58,204,255,167,194,207 2570 DATA 248,58,22,239,167,196,31 2580 DATA 250,195,207,248,197,213,205 2590 DATA 3,139,202,44,250,254,27 2600 DATA 194,33,250,225,209,193,205 2610 DATA 94,79,205,141,79,205,77 2620 DATA 79,42,67,246,34,6,239 2630 DATA 195,19,123,197,213,205,25 2640 DATA 159,202,33,250,254,27,202 2650 DATA 10,250,209,193,201,0,50 2660 DATA 22,239,205,254,109,27,89 2670 DATA 45,55,70,110,116,58,80 2680 DATA 47,82,47,69,47,67,0 2690 DATA 205,31,250,33,94,255,17 2700 DATA 135,255,6,5,35,35,19 2710 DATA 5,202,104,255,190,194,115 2720 DATA 255,50,206,255,26,50,202 2730 DATA 255,195,191,248,80,88,96 2740 DATA 128,197,213,58,202,255,60 2750 DATA 71,58,33,239,60,79,197 2760 DATA 209,213,205,118,141,209,21 2770 DATA 194,154,255,80,89,213,205 2780 DATA 118,141,209,29,194,165,255 2790 DATA 80,122,67,167,194,154,255 2800 DATA 50,204,255,205,118,141,33 2810 DATA 14,1,34,6,239,58,206 2820 DATA 255,231,209,193,201,201 2830 REM END OF DATA ---------- FORMAT.BA ---------------- 0 'FORMAT.BA/200v2.3(c)10/14/1991,R.W.HESS 1 CLS:CLEAR1000:ONERRORGOTO41:DEFSTRA-H:GOSUB44 2 FILES:PRINT:LINEINPUT"Printer data file: ";F:PRINT 3 IFF=""THENMENU 4 OPENFFORINPUTAS1:LINEINPUT#1,D 5 IFASC(D)<65THEN63ELSELINEINPUT#1,D1:SP=VAL(D1) 6 FORX=1TO4:INPUT#1,SF:IFINT(SF*SP)>237THEN69 7 NEXT:INPUT#1,D:IFVAL(D)>0THEN65 8 INPUT#1,AS:S=VAL(AS):IFS=0ANDASC(AS)<>48THEN64ELSEIFS=0THEN12 9 IFS>24THEN64ELSEFORX=1TOS:INPUT#1,AS:S1=VAL(AS) 10 IFAS=""THEN64ELSEIFS1=0ANDASC(AS)<>48THEN64ELSENEXT:INPUT#1,D 11 IFVAL(D)<>0ANDASC(D)<65THEN64 12 IFEOF(1)THEN20ELSEXM=XM+1:LINEINPUT#1,D 13 IFVAL(D)<127ORVAL(D)>255THEN66 14 GOSUB15:GOSUB15:GOTO12 15 INPUT#1,N:IFN=0ORN>4THEN65 16 FORX=1TON:INPUT#1,AK:IFAK=""THEN67 17 IFVAL(AK)=0ANDASC(AK)<>48THEN67ELSENEXT 18 INPUT#1,C:IF(VAL(C))OR(ASC(C))<65THEN67 19 RETURN 20 CLOSE:IFXM>10THEN68ELSEG="":FORX=1TO6:G=G+CHR$(PEEK(LN-1+X)):NEXT 21 CLS:BEEP:PRINT:PRINTCHR$(34);G;CHR$(34); 22 PRINT" now loaded: overwrite Y/N ?";:AI=INPUT$(1): 23 LG=INSTR(" NnYy",AI):PRINTAI:PRINT 24 IFLG<4THENPRINT:PRINT"No Load!":ENDELSEFORX=1TO145:POKEQO-1+X,0:NEXT 25 IFPEEK(QO+X-1)-241THEN62 26 OPENFFORINPUTAS1:LINEINPUT#1,G:G=LEFT$(G+" ",6) 27 FORX=1TO6:POKELN-1+X,ASC(MID$(G,X,1)):NEXT 28 LINEINPUT#1,DS:SS=VAL(DS):FORX=1TO4:INPUT#1,SV 29 SP=INT(SS*SV):POKE(LF+X-1),SP:NEXT:INPUT#1,D 30 INPUT#1,S:IFS=0THEN32ELSEPOKEQO,S:FORX=1TOS:INPUT#1,S1 31 POKEQO+X,S1:NEXT:INPUT#1,D 32 IFEOF(1)THEN37ELSEQ=Q+6:IFQ>QMTHEN68 33 LINEINPUT#1,D:POKEQ,VAL(D):INPUT#1,N 34 POKEQ+1,N:FORX=1TON:INPUT#1,K:POKEQ+1+X,K:NEXT 35 INPUT#1,C:QF=QF+6:INPUT#1,N:POKEQF,N:FORX=1TON 36 INPUT#1,K:POKEQF+X,K:NEXT:INPUT#1,C:GOTO32 37 CLOSE:BEEP:PRINT:PRINT"Send all "CHR$(34)"OFF"CHR$(34)" commands prior"; 38 PRINT" to sending Printer Set-up String Y/N ?"; 39 AI=INPUT$(1):PRINTAI:IFINSTR("Yy",AI)THENPOKEQP,1:ELSEPOKEQP,0 40 MENU 41 BEEP:BEEP:IFERR=52THENPRINTF" not found":END 42 IFERR=54THENPRINTD" missing commands!":GOTO70 43 PRINT"Err"ERR"Erl"ERL:END 44 KA=62122:P1$="" 45 KA=KA+11:IF PEEK(KA)=255THEN61 46 IF PEEK(KA)<>160 THEN 45 47 FORI=1TO6:P$=CHR$(PEEK(KA+2+I)):P1$=P1$+P$:NEXT 48 IFP1$<>"FORMAT"THENP1$="":GOTO45 49 RA=PEEK(KA+1)+256*PEEK(KA+2)+6 50 IF(PEEK(RA-4)+256*PEEK(RA-3))<>1280THEN62 51 IF(PEEK(RA-2)+256*PEEK(RA-1))<>63455THEN62 52 Q=RA+653:QF=RA+714:QO=RA+634:QM=RA+720 53 LN=RA+257:QP=RA+289:LF=RA+1215:RETURN 54 'Q = ONTBL-6 / FORMAT TOP+659-6 55 'QF= OFTBL-5 / FORMAT TOP+719-5 56 'QO= 25 byte print table (1,24) @ FORMAT TOP+634 57 'QM= Maximum On-table size 58 'LN= Name location 59 'QP= Off option @ FORMAT TOP+289 60 'LF= Font table location 61 PRINT"No FORMAT.CO on menu!":END 62 PRINT"Wrong or corrupted FORMAT.CO!":END 63 PRINT"Bad Print Command Set name!":GOTO70 64 PRINT"Bad Prtr Set-up String length/format!":GOTO70 65 PRINT"Command Length =0 or >4 for: "D:GOTO70 66 PRINTD" >255 or <127 !":GOTO70 67 PRINT"Bad desc. or wrong length: "D:GOTO70 68 PRINT"Too many print command sets!":GOTO70 69 PRINT"Paper size * font too big!" 70 CLOSE:BEEP:BEEP:F=LEFT$(F+" ",6)+".DO"+CHR$(0):PRINT:PRINT 71 PRINT"Press any key to return to "CHR$(34); 72 FORX=1TO9:Y=ASC(MID$(F,X,1)):IFY>96ANDY<123THENY=YAND95 73 PRINTCHR$(Y);:NEXT 74 PRINTCHR$(34)":":PRINT" then re-run FORMAT.BA. "; 75 CALL4855:V=VARPTR(F) 76 CALL29118,,PEEK(V+1)+256*PEEK(V+2):MENU