0 IFLEN(F$)THENELSE64000'init 1 IFCC%>126ORCC%<32THENCC%=63:RETURNELSERETURN'QuestionmarkSubstitute the CharacterCode for non-ASCII 3 DS$=MID$(STR$(NV!),2)'DigitString of NumericValue w/zero pad to NumDigits 4 IFLEN(DS$)255THENCP%=CP%-255'CursorPosition per MoveIncrement +/- 29 PRINT@CP%,SC$;:RETURN 30 CT%=255:RS%=CP%'Rev Trace 31 GOSUB12:IFKJ%=13THEN39'ESCape 32 GOSUB60:IFHG%THENMS$="Hng.":GOSUB74:IFJT%THEN34ELSEBEEP:GOTO39 33 IFRT%THENELSEMS$="end.":GOSUB74 34 GOSUB54:IFJT%THENNV!=LEN(J$(JT%)):ND%=3:GOSUB3:MS$="&Jnt"+DS$+"-way":GOSUB74:BEEP:GOSUB97:GOTO39'JointTrace 35 IFRF%THENELSE39'end condition 36 PRINTHC$;:LINE(6*(RS%MOD40)+4,8*(RS%\40)+4)-(6*(RF%MOD40)+2,8*(RF%\40)+2):PRINTSC$;:IFMC%OR2ANDPEEK(-94)THENCP%=RF%:GOSUB29'trace/move 37 CT%=CT%-1:IFCT%THENELSEMS$="Cir.":GOSUB74:BEEP:GOTO39 38 IFEP%THENRS%=RF%:GOTO31'until end 39 RETURN 40 CT%=255:RS%=CP%'Fwd Trace 41 GOSUB12:IFKJ%=13THEN49'ESCape 42 GOSUB60:IFJT%THENNV!=LEN(J$(JT%)):ND%=3:GOSUB3:MS$="&Jnt"+DS$+"-way":GOSUB70:GOSUB97'JointTrace 44 GOSUB50:IFHG%THENMS$="Hng.":GOSUB70:BEEP:GOTO49 45 IFRT%THENELSEMS$="end.":GOSUB70:GOTO49 46 PRINTHC$;:LINE(6*(RS%MOD40)+2,8*(RS%\40)+2)-(6*(RT%MOD40)+4,8*(RT%\40)+4):PRINTSC$;:IFMC%OR2ANDPEEK(-94)THENCP%=RT%:GOSUB29'trace/move 47 CT%=CT%-1:IFCT%THENELSEMS$="Cir.":GOSUB70:BEEP:GOTO49 48 IFEP%THENRS%=RT%:GOTO41'until end 49 RETURN 50 NV!=RS%:ND%=3:GOSUB3:MS$=">"+DS$:GOSUB70:RETURN'left-scroll message >RS% 54 NV!=RS%:ND%=3:GOSUB3:MS$=">"+DS$:GOSUB74:RETURN'right-scroll message >RS% 60 RF%=0'RefTo/Hung/Joint/RefFm per RefSec 62 RT%=PEEK(L!+RS%)'RefTo 63 HG%=0:IFRT%=RS%THENHG%=1'HunG flag 64 JT%=INSTR(J$(0),CHR$(RS%))'JoinT flag/JoinT number, 0=not Jointed 65 RF%=INSTR(RF%+1,L$,CHR$(RS%)) 66 IFRF%=RS%THENELSE69 67 IFRF%=255THENRF%=0ELSE65'Hung. Force to 0 where no more else look for more 69 RETURN 70 CS%=(PEEK(-2503)-1)*2+(PEEK(-2502)-1)*16+ABS(SGN(PEEK(-2498))):PRINT@256,E$"V"RIGHT$(M$,64-LEN(MS$))MS$E$"Y"CHR$((CS%\2AND7)+32)CHR$(CS%\16+32)E$CHR$(87-CS%MOD2);:RETURN'MessageString left-scroll 74 CS%=(PEEK(-2503)-1)*2+(PEEK(-2502)-1)*16+ABS(SGN(PEEK(-2498))):PRINT@256,E$"V"MS$+LEFT$(M$,64-LEN(MS$))E$"Y"CHR$((CS%\2AND7)+32)CHR$(CS%\16+32)E$CHR$(87-CS%MOD2);:RETURN'MessageString right-scroll 78 IF(6ANDINP(187))=2THENLPRINTM$:RETURNELSERETURN'MessagelinePrint 97 PRINTHC$;:FORJ%=1TOLEN(J$(JT%)):GOSUB12:IFKJ%=13THENFORJ%=0TO0:GOTO99ELSELINE(6*(ASC(MID$(J$(JT%),J%))MOD40)+2,8*(ASC(MID$(J$(JT%),J%))\40)+2)-(6*(RS%MOD40)+4,8*(RS%\40)+4)'JointTrace Way to Ref 99 NEXT:PRINTSC$;:RETURN 110 POKE-86,0'clear keybuf 112 IFPEEK(-86)THENELSE112'await keystroke 114 GOSUB12:IFKJ%=13THENMS$=ES$:ES$="":GOSUB70:MS$="":GOTO152'ESCape 116 IFKJ%<22OR239THENJ%=J%+7 136 MID$(MS$,2*I%+1)=CHR$(J%+48)'Hex MSDigit 138 J%=CC%MOD16:IFJ%>9THENJ%=J%+7 140 MID$(MS$,2*I%+2)=CHR$(J%+48)'Hex LSDigit 142 NEXT 144 GOSUB70:LINE(104,55)-(135,55):PRESET(104+(JT%+HG%MOD2)MOD32,55):IFHG%=2THENPRESET(104+(JT%+1)MOD32,55)'show view with sector address scale 146 RT%=HG%:GOTO110 148 FORI%=0TO31:VB%(RF%,I%)=INP(131):NEXT:JT%=(JT%+1)MOD32:RF%=(RF%+1)MOD2 150 FORI%=0TO31:VB%(RF%,I%)=INP(131):NEXT:JT%=(JT%+1)MOD32:RF%=(RF%+1)MOD2 152 RETURN'from get or at ESCape back to Command processor 600 FORSN%=1TO255:GOSUB12:IFKJ%=13THENFORSN%=0TO0:GOTO609'ESCape 601 TF%=(ASC(MID$(F$,SN%))AND31):IF(TF%>1ANDTF%<5)THENELSE609'bypass unless a File flag 602 PRINT@0,OV$CHR$(PEEK(-512))F$;:CP%=SN%:GOSUB29'clear link lines, ShowCursor at start of file 603 GOSUB610 608 MC%=0:EP%=1:GOSUB40:IFKJ%=13THENFORSN%=0TO0:GOTO609ELSEBEEP'file trace w/ESCape & CTRLcusor options 609 NEXT:RETURN 610 OUT129,SN%:MS$=""'GetShowFileInfo 614 FORI%=0TO7:CC%=INP(131):GOSUB1:MS$=MS$+CHR$(CC%):NEXT'File name 616 NV!=INP(131):NV!=256*INP(131)+NV!:ND%=5:GOSUB3:MS$=MS$+"("+DS$'File length 618 NV!=NV!+10:I%=INT(NV!/1024):NV!=NV!/1024:IFI%=NV!THENELSEI%=I%+1'expected # of sectors 619 NV!=I%:ND%=3:GOSUB3:MS$=MS$+"\"+DS$+")":GOSUB70:RETURN'scroll msg 620 SN%=CP%'FileInfoQualified 624 TF%=(ASC(MID$(F$,SN%))AND31):IF(TF%>1ANDTF%<5)THENELSE634'ignore unless a File flag 630 SN%=CP%:GOSUB610'FileInfoUnqualified 634 RETURN 800 IFPEEK(-94)AND2THEN8000ELSEONKJ%-18GOTO78,802 802 IF(6ANDINP(187))=2THENLPRINTCHR$(PEEK(-512));:FORMI%=0TO6:LPRINTMID$(F$,MI%*40+1-SGN(MI%),39+SGN(MI%)):NEXT'PrintMap 804 RETURN 1000 IFLEN(J$(0))THENELSE1016'mark all Jointed sectors with ReverseVideo 1004 CS%=(PEEK(-2503)-1)*2+(PEEK(-2502)-1)*16+ABS(SGN(PEEK(-2498)))'get CursorStatus row/col/scroll 1006 FORJ%=1TOLEN(J$(0)) 1008 I%=ASC(MID$(J$(0),J%,1))'Jointed sector# 1010 PRINT@I%,RV$MID$(F$,I%,1)OV$;'marked 1012 PRINTE$"Y"CHR$((CS%\2AND7)+32)CHR$(CS%\16+32)E$CHR$(87-CS%MOD2);'restore CursorStatus 1014 NEXT 1016 RETURN 2000 MS$=SPACE$(64)'view sector in 64-char ? substituted ASCII/32-byte Hex. KJ% from Command processor =22/23 [v]/[V] 2002 OUT129,CP%'sector other than Dir 2003 ES$=M$:RF%=0:JT%=30:GOSUB148:IFKJ%=22THENRT%=0ELSERT%=2'for Dir, use OUT129,0 and enter here 2004 GOTO118 8000 'Report print 8100 'print date/time and sector map 8102 MS$="Rampac Diagnostic Report Date "+DATE$+" Time "+TIME$:GOSUB9 8104 GOSUB802 8200 'print statistic totals 8202 MS$="Directory Flag and Link Format.............................. ":IFDF%THENMS$=MS$+"`OK"ELSEMS$=MS$+"BAD" 8204 GOSUB9:ND%=3 8206 IFAD%THENNV!=AD%:GOSUB3:MS$="ALTERNATE DIR Type [a A] directory flag.. total sectors "+DS$:GOSUB9 8208 IFUN%THENNV!=UN%:GOSUB3:MS$="UNKNOWN Type [?] has unknown flag.. total sectors "+DS$:GOSUB9 8210 IFHS%THENNV!=HS%:GOSUB3:MS$="HUNG Type [H] has link to self.. total sectors "+DS$:GOSUB9 8212 IFFE%THENNV!=FE%:GOSUB3:MS$="FREE Type [^] has no link....... total sectors "+DS$:GOSUB9 8214 IFRE%THENNV!=RE%:GOSUB3:MS$="RESERVED Type [r] free but has link. total sectors "+DS$:GOSUB9 8216 I%=255-HS%-FE%-RE%-AD%-UN%-NF%'conts 8218 IFI%THENNV!=I%:GOSUB3:MS$="CONTINUATION Type [_] chain many-sector. total sectors "+DS$:GOSUB9 8220 I%=LEN(J$(0))'joints 8222 IFI%THENNV!=I%:GOSUB3:MS$="Jointed (links from two or more other sectors)....... joints "+DS$:GOSUB9 8224 IFNF%THENNV!=NF%:GOSUB3:MS$="FILE Type [b B c C d D]........... grand-total "+DS$:GOSUB9 8226 IFFS%THENNV!=FS%:GOSUB3:MS$="One-sector Files [b c d] end themselves.... sub-total "+DS$:GOSUB9 8228 IFFL%THENNV!=FL%:GOSUB3:MS$="Many-sector Files start [B C D] a link chain...... sub-total "+DS$:GOSUB9 8230 IFCE%THENNV!=CE%:GOSUB3:MS$="continuations which end a link chain and its file. sub-total "+DS$:GOSUB9 8300 'print sector info 8302 MS$="Sec Filename(bytes\1of) Type Frm< Jointed_Jnt#_min-max Link >Fwd":GOSUB9 8304 FORRS%=1TO255 8306 NV!=RS%:ND%=3:GOSUB3:MS$=DS$+" " 8308 OUT129,RS% 8310 FORI%=0TO7:CC%=INP(131):GOSUB1:MS$=MS$+CHR$(CC%):NEXT'File name 8312 NV!=INP(131):NV!=256*INP(131)+NV!:ND%=5:GOSUB3:MS$=MS$+"("+DS$'File length 8314 NV!=NV!+10:I%=INT(NV!/1024):NV!=NV!/1024:IFI%=NV!THENELSEI%=I%+1'expected # of sectors 8316 NV!=I%:ND%=3:GOSUB3:MS$=MS$+"\"+DS$+") " 8318 I%=INSTR("AaBbCcDd_?H^r",MID$(F$,RS%,1)):MS$=MS$+MID$("AltDAltDFileFileFileFileFileFileContUnk?HungFreeRsrv",I%*4-3,4)+" " 8320 GOSUB60:NV!=RF%:ND%=3 8322 IFJT%THENDS$="???":GOTO8330'joint 8324 IFHG%THENNV!=RS% 8326 GOSUB3:IFNV!THENELSEDS$=" " 8330 MS$=MS$+DS$+"< " 8332 IFJT%THENELSEMS$=MS$+SPACE$(21):GOTO8340 8334 NV!=LEN(J$(JT%)):GOSUB3:MS$=MS$+DS$+"-way_#" 8336 NV!=JT%:GOSUB3:MS$=MS$+DS$+"_" 8338 NV!=RF%:GOSUB3:MS$=MS$+DS$+"-":NV!=ASC(MID$(J$(JT%),1)):GOSUB3:MS$=MS$+DS$+" " 8340 NV!=RT%:GOSUB3 8342 IFHG%THENDS$="Self >"+DS$:GOTO8350 8344 IFRT%THENDS$="more >"+DS$ELSEDS$="end. >Dir" 8350 MS$=MS$+DS$:GOSUB9 8360 NEXT:MS$="":DS$="" 8400 'print joint info 8402 IFLEN(J$(0))THENELSE8499 8404 ND%=3 8406 FORI%=1TOLEN(J$(0)) 8408 NV!=I%:GOSUB3:MS$="Joint#"+DS$+" >":NV!=ASC(MID$(J$(0),I%)):GOSUB3:MS$=MS$+DS$+" is ":NV!=LEN(J$(I%)):GOSUB3:MS$=MS$+DS$+"-way from: " 8410 FORJ%=NV!TO1STEP-1 8412 IFLEN(MS$)<64THENELSEGOSUB9:MS$="" 8416 NV!=ASC(MID$(J$(I%),J%)):GOSUB3:MS$=MS$+DS$ 8418 IFJ%>1THENMS$=MS$+","ELSEMS$=MS$+"." 8420 NEXT:IFLEN(MS$)THENGOSUB9:MS$="" 8430 NEXT 8499 RETURN 8999 RETURN 9990 ES$=M$:MS$="Shut power down (Y/N)?":GOSUB70:MS$=ES$:IF(ASC(INPUT$(1))OR32)=121THENPOWEROFF,RESUME:GOSUB70:MS$="Power up." 9991 GOSUB70:RETURN 9998 PRINT@0,OV$CHR$(PEEK(-512))F$;:GOSUB29:RETURN'clear link lines, ShowCursor 9999 MENU