Listing of file='TBO.DMAP' on disk='vmedia/toolbox.wvd.zip'
# Sector 961, program filename = 'TBO.DMAP' 0010 REM .TBO.DMAP 02/27/89 DISK MAP 0020 COM P$(999)8,M$(999)8,M1,M2,H$3,H,P1,F3 : M$(),P$()=" " 0030 IF D1$(10)=" "THEN LOAD T#0,"TBODISKS"8000,8800BEG 40 0040 DIM E$(1)80,A$80,A$(4)64,B$(255)1,P$64,M$2,C$1,C1$1,F$8,H1$1 0041 REM %0 '98 What disk?, '0 Load START, '1 Load TBO.SDC0, '2 Load TBO.FMAP 0042 REM %0 #0 System disk, #1 Prime Prog.disk, #2 Sub program disk 0044 REM %0 A A, A$ A$80, A$( $256 Disk read, A1 Disk sector, A9 Sector # res et 0045 REM %0 B B, B$( $255 Disk.data, B1 B$().ptr, B2 B2 0046 REM %0 C C, C$ C$1, C1 dummy, C1$ Byte 1 of P1$ 0047 REM %0 D D, D$ $16 data, D0 D0, D1 D1, D1$( Disk list, D9 D1$(disk) 0048 REM %0 E Ptr to text end, E$ Error number, E$( E$(1)80, E9 End flag 0049 REM %0 F F, F$ FileName 0050 REM %0 F3 Process flag : REM F3=0 Process START F3=1 Process LOADer 0051 REM %0 F9 DATA stmt form : REM =0 Unknown =1 @MENU form =2 TBO form 0052 REM %0 H Hard copy flag, H$ List address, H1$ $1 Header byte 0053 REM %0 L Fld length, N$ Error Line 0060 REM %0 M$( Menu file names, M1 ptr to M$(), M2 ptr to M$(), M$ Match arra y 0070 REM %0 P$ Description text area, P$( Prog.file names, P1 P$(ptr), P1$ $16 0080 REM %0 U @MENU U, U$ @MENU U$, U1 @MENU U1, U1$ @MENU U1$ 0090 M1=1 : M2=1 : F9=0 0100 P1=1 0110 SELECT PRINT 005(80) : PRINT HEX(03);" DISK MAP This program traces the program map of a dis k" : PRINT "By keying off the descriptions and program names in LOAD modules" : PRINT 0120 REM .TBO Form at 9000 DATA "FileName?Description beyond 64 ddd" : REM .DATA" " ends list 0130 REM .TBO pos 9 c=Save COMmon ]=new menu @=@MENU call 0140 REM @MENUForm at 9000 DATA "FileName","Description","P/D" : REM .DATA"no more","end of list"," " ends list 0150 PRINT " To reload 'START' Key S.F. '0 for 'SORTCAT' S.F.'1" 0160 GOSUB '98 : SELECT #1<D1$(D9)> 0170 DATA LOAD BA T#1,(0)A$() : PRINT "Disk=";D1$(D9);" Cat.sectors =";VAL(STR(A$(),1),2);" Max=";VAL(S TR(A$(),5),2)-1,"Curr end=";VAL(STR(A$(),3),2)-1 0180 H$="005" : LINPUT "Output device",-H$ : IF H$="005"THEN H=0 : ELSE H=1 0190 IF H=0THEN 200 : INPUT "DESCRIPTION",P$ : SELECT PRINT <H$>(130) : PRINT HEX(0C0E);"DISK MAP" : PRINT : PRINT HEX(0E);P$ : SELECT PRINT 005 0200 F$="START" : F3=0 : GOTO 220 0210 SELECT PRINT 005 : F$=" " 0220 ON M1 GOTO 230 : F$=M$(M2) : M2=M2+1 0230 PRINT "Loader file name =";F$; " or" : IF F$=" "THEN 260 : INPUT F$ 0240 LIMITS T #1,F$,A,B,C,D : REM .Name,start,end,used,status : A9=A 0250 ON DGOTO 290,275 : PRINT "Error ";D;" on retrieval of file ";F$ : IF D=0THEN PRINT "Named file is not on disk surface" : GOTO 230 0260 IF H>0THEN SELECT PRINT <H$>(79) : GOSUB 1080 : SELECT PRINT 005(80) : PRINT "Key '0 to START '1 to SORT '2 to Function map else repeat" : C$=HEX(0D) 0270 KEYIN C$ : ON POS(HEX(0D000102)=C$)GOTO 270,1150,1160,1170 : GOTO 10 0275 E9,F=0 : GOSUB 430 : F$=" " : IF STR(A$(),,3)=HEX(810188)THEN F$=STR(A$(),4,8) : GOTO 360 0280 REM %..Examine Program module : REM .If F3=0 START module If F3=1 LOAD menus If F3=2 TBO format 0290 E9=0 : F=0 : GOSUB 430 : B1=1 : IF H>0THEN SELECT PRINT <H$> : IF F3=2THEN PRINT HEX(0E);" LOAD MODULE ";M2-1; " = ";F$ : ON F3+1 GOTO 330,500,590 0300 REM %^.Examine START module 0310 REM .Form 1) $PSTAT="FileName" colon LOAD T "@MENU" : REM .Form 2) $PSTAT="--space-" colon LOAD T "@MENU" : REM .Form 3) LOAD T "@MENU" : REM .SELECT DISK or SELECT #0 /hhh may precede 0320 REM .Look for 'EA' PSTAT or A1 for LOAD or A5 for SELECT 0330 D0=POS(STR(B$(),B1)=HEX(0D)) : IF D0>0THEN 340 : IF H1$=HEX(00)THEN 290 : F3=1 : GOTO 220 0340 F$="NO PSTAT" : D1=POS(STR(B$(),B1,D0)=HEX(EA)) : IF D1=0THEN 350 : IF STR(B$(),B1+D1,5)<>"PSTAT"THEN 400 : B=B1 : GOSUB 1140 : IF C=0THEN 350 : F$=A$ 0350 D1=POS(STR(B$(),B1,D0)=HEX(A1)) : IF D1=0THEN 400 : B=B1+D1 : GOSUB 1140 : IF C=0THEN 400 : IF A$="@MENU"THEN 360 : F$=A$ : A$=" " 0360 IF F$="NO PSTAT"THEN F$=".STARTD" : IF F$=" "THEN 410 0370 SELECT #2 <D1$(D9)> 0380 LIMITS T#2,F$,D,D,D,D : ON DGOTO 390,390 : PRINT "File type ";D;" on trying to read File ";F$ : GOTO 400 0390 PRINTUSING "LOAD ## uses file ######## ",M1,F$; : IF A$<>" "THEN PRINTUSING "via ########",A$; : PRINTUSING " on disk ###",D1$(D9); : PRINT : M$(M1)=F$ : M1=M1+1 0400 B1=B1+D0 : GOTO 330 0410 PRINT "Start module is unknown format " : GOTO 160 0420 REM %.SR..Load 1st block of program 0430 DATA LOAD BA T #1,(A,A)A$() : B=1 : H1$=STR(A$(),,1) 0440 IF H1$=HEX(40)OR H1$=HEX(41)THEN 480 0450 MAT COPY A$()<2,255>TO B$()<1,255> 0460 C$=HEX(FD) : MAT SEARCHB$()<1,255>,=C$ TO M$ : IF M$>HEX(0000)THEN 470 : E9=1 : C$=HEX(FE) : MAT SEARCHB$()<1,255>,=C$ TO M$ : IF M$=HEX(0000)THEN RETURN 0470 E=VAL(STR(M$,2)) : RETURN 0480 IF E9=0THEN 430 : STOP "END OF FILE ERROR IN YOUR LOAD MODULE" : RETURN 0500 REM %^.Determine LOAD menu module type 0505 REM .Set F9 =0 unknown form =1 @MENU form >=2 TBO form 0510 A=A9 : E9,F9=0 : GOSUB 520 : A=A9 : ON F9+1 GOTO 511,512 : F3=2 : GOTO 290 0511 STOP "TYPE UNKNOWN "# 0512 LOAD T#1,F$ 9000,9999BEG 1200 0515 GOSUB 580 0520 GOSUB 540 : REM /.Pos to DATA atom : IF E9=0THEN 515 : IF M$>HEX(0000)THEN 515 : IF STR(B$(),B2,L)="no more"THEN F9=1 : RETURN 0540 REM .SR.pos to DATA atom : C$=HEX(97) : MAT SEARCHB$()<B,E-B>,=C$ TO M$ : IF M$>HEX(0000)THEN RETURN : IF E9=1THEN RETURN : GOSUB 430 : REM /.Read file further : GOTO 540 0560 REM .Process DATA stmt -- F9=1 @MENU form F9=2 TBO form 0580 L=0 : B=B+VAL(STR(M$,2)) : C$=HEX(22) : MAT SEARCHB$()<B,E-B>,=C$ TO M$ : IF M$=HEX(0000)THEN RETURN : B2,B=B+VAL(STR(M$,2)) : MAT SEARCHB$()<B,E-B>,=C$ TO M$ : IF M$=HEX(0000)THEN RETURN : L=VAL(STR(M$,2))-1 : F9=F9+1 : RETURN 0585 REM %^.Find DATA stmt 0590 C$=HEX(97) : MAT SEARCHB$()<B,E-B>,=C$ TO M$ : IF M$>HEX(0000)THEN 600 : GOSUB 480 : REM /.Read file further : GOTO 590 0600 B=B+VAL(STR(M$,2)) : REM /Position of DATA verb +1 0610 C$=HEX(22) : REM /QUOTES 0620 MAT SEARCHB$()<B,E-B>,=C$ TO M$ : IF M$=HEX(0000)THEN 710 0630 B=B+VAL(STR(M$,2)) : REM /Position of first QUOTE +1 0640 MAT SEARCHB$()<B,E-B>,=C$ TO M$ : IF M$=HEX(0000)THEN 710 0650 L=VAL(STR(M$,2))-1 0660 E$()=STR(B$(),B,L) : P$=" " 0670 P$=STR(E$(1),1,L) : REM /DATA TERMINOLOGY 0680 IF P$=" "THEN 710 0690 B=B+VAL(STR(M$,2)) : REM /Position of last QUOTE 0700 IF B<ETHEN 720 : B=1 : IF E9=0THEN STOP # 0710 GOTO 210 0720 D$,P1$=STR(E$(),1,8) : C$=STR(E$(),9,1) 0730 P1$=" " : IF C$="]"THEN P1$="TB.Loader?" : IF C$="@"THEN P1$="@MENU.xx?" 0740 IF L>8THEN F9=1 : ELSE F9=2 0750 IF H=0THEN 760 : SELECT PRINT <H$> : PRINT TAB(5); 0760 IF F>0THEN 770 : PRINT HEX(0E);"Menu description = ";P$ : GOTO 820 0770 IF POS(D$=HEX(22))>0THEN STR(D$,POS(D$=HEX(22)))=" " 0780 IF D$="no more"THEN 210 0790 GOSUB 880 0800 C1$=P1$ : IF STR(P$,10)<>" "THEN 810 : B1=B : GOSUB 1140 : STR(P$,10)=A$ : B=B1 : IF C1$="f"THEN PRINTUSING 860,F,D$,P1$,STR(P$,10) : ELSE PRINTUSING 850,F,D$,P1$,M1,STR(P$,10) : GOTO 820 0810 IF C1$="f"THEN PRINTUSING 840,F,D$,P1$,STR(P$,10) : ELSE IF P1$="NONE"THEN PRINTUSING 830,F,D$,P1$," ",STR(P$,10) : ELSE PRINTUSING 830,F,D$,P1$,M1-1,STR(P$,10) 0820 SELECT PRINT 005 : F=F+1 : GOTO 590 0830 %' ## for ######## ############ ### = ################################### ######## 0840 %' ## for ######## ################ = ################################### ######## 0850 %Item ## ######## ############ ### = ################################### ######## 0860 %Item ## ######## ################ = ################################### ######## 0870 REM %.S.R. to LOAD from disk 0880 LIMITS T #1,D$,A1,B1,C1,D1 0890 ON D1GOTO 900,942 : GOTO 970 0900 DATA LOAD BA T #1,(A1+1,A1)A$() 0910 REM .Menu module must be DATA statements at line 9xxx 0920 IF STR(A$(),2,2)>=HEX(FF90)THEN 1010 : MAT SEARCH A$(),=HEX(0D0000FF90)TO M$ : IF M$>HEX(0000)THEN 1010 0930 P1$="function" : MAT SEARCHP$(),=STR(D$,,8)TO M$STEP 8 : IF M$>HEX(0000)THEN 940 : CONVERT P1TO STR(P1$,12,4),(####) : P$(P1)=D$ : P1=P1+1 : RETURN 0940 CONVERT 1+INT(VAL(M$,2)/8)TO STR(P1$,12,4),(####) : RETURN 0942 P1$="DATA file" : RETURN 0945 REM %.ON ERROR processing 0950 ON ERROR E$,N$ GOTO 960 0960 IF E$<>"80"THEN 980 0970 P1$="NONE" : GOTO 810 0980 IF E$="D82"THEN 970 0990 PRINT "LINE ";N$,"ERROR=";E$ : STOP # 1000 REM .Menu module must be DATA statements at line 9xxx 1010 IF C$="]"THEN 1020 : IF C$="@"THEN 1050 : GOTO 1050 1020 P1$="TB.menu" : GOTO 1060 1030 REM .Look for 97 (DATA) and "12345678" for @MENU 1040 REM .Look for 97 (DATA) and "more than 8" for TB.menu 1050 P1$="@MENU.xxx" 1060 CONVERT M1TO STR(P1$,13,3),(###) : MAT SEARCHM$()<1,100*8>,=STR(D$,,8)TO M$STEP 8 : IF M$>HEX(0000)THEN 1070 : M$(M1)=D$ : M1=M1+1 : RETURN 1070 CONVERT 1+INT(VAL(M$,2)/8)TO STR(P1$,13,3),(###) : RETURN 1080 PRINT : PRINT HEX(0E);"NORMAL OPERATING INSTRUCTIONS FOR SYSTEMS" 1090 PRINT "1). MOUNT SYSTEM PROGRAM DISK IN 310 (or B10 or 320 or B20)" 1100 PRINT "2). Key SELECT DISK 310 (or B10 or 320 or B20)" 1110 PRINT "3. Key RESET then LOAD RUN (EXEC)" 1120 PRINT "4). Follow the CRT prompts" : RETURN 1130 REM .S.R. Move string following atom to F$ 1140 A$=" " : C=POS(STR(B$(),B,255-B)=HEX(22)) : IF C=0 THEN RETURN : A$=STR(B$(),B+C) : B=POS(A$=HEX(22)) : IF B>0THEN STR(A$,B)=" " : RETURN 1150 DEFFN'0 : LOAD T"START" 1160 DEFFN'1 : LOAD T"TBO.SDC0" 1170 DEFFN'2 : LOAD T"TBO.FMAP"10,7000 1200 REM %^.@MENU.FORM 1202 REM .DATA 1st "node.file.name", "node.title", item.count, other.items : REM .DATA 1st optional "prior.node", file node etc 1204 REM .DATA mid "FileName", "description", "type", optional items. 1206 REM .DATA last "no more", "end of node", " ". 1210 DIM U$8,U1$68 : RESTORE LINE 1210 : READ U$,U1$,U1,U : IF U=0THEN 1214 : FOR F=1TO U : READ M$ : NEXT F 1214 F=0 : IF H>0THEN SELECT PRINT <H$> 1215 PRINT HEX(0E);"@MENU description = ";U1$ 1220 READ U1$ : IF U1$="no more"THEN 1240 : IF LEN(U1$)<3THEN 1220 : IF LEN(U1$)>8THEN 1220 1230 F=F+1 : D$,U$=U1$ : READ U1$ : GOSUB 930 : IF M$=HEX(0000)THEN GOSUB 880 : READ U2$ : IF U2$="O"THEN P1$="Overlay" : PRINTUSING 860,F,U$,P1$,U1$ : GOTO 1220 1240 GOTO 210