0 'Club 100 Library, Modem 415-939-1246 1 'SECTOR.BA by Cris Courson, version 2.0 modified by Robert Benson 6/16/89 10 CLS:CLEAR255:SCREEN0:FORA=1TO239STEP80:B=1 11 LINE(A+B,0)-(A+B,63):B=B*1.3+2:IFB<79GOTO11ELSENEXT 12 A=.1:A$=" SECTOR.BA by Courson 3/4/89 ":GOSUB240 13 MAXFILES=3:CLEAR1024,HIMEM-287:A=HIMEM+1:FORB=ATOA+29:READC:IFC>4GOTO18 14 D=(A+31)/256AND255:IFC=1THEND=A+31-(D*256):GOTO17 15 IFC=2GOTO17 16 D=(A+30)/256AND255:IFC=3THEND=A+30-(D*256) 17 C=D 18 POKEB,C:NEXTB 19 A=A+1:B=62974:C=A/256AND255:POKEB,C:POKEB-1,A-(C*256):POKEB-2,195:Q=A+30 20 DATA201,229,213,197,245,33,1,2,175,87,58,3,4,95,25,219,200,119,33 21 DATA3,4,52,241,193,209,225,227,225,251,201 22 DIMP$(3):H$="0123456789ABCDEF":T=0:S=0:P=2:D=8 23 ONERRORGOTO320:T$="00":S$="0":I$=CHR$(13)+" "+CHR$(27)+"OoJjWwFfDdTtSs" 24 FORA=1TO3:READP$(A):NEXTA 25 DATA"CRT:","LCD:","LPT:" 26 OPEN"COM:98N1D"FOROUTPUTAS1:OPEN"COM:98N1D"FORINPUTAS2 30 CLS:X=0 31 PRINT@0,"[ESC]__________________Resume Main Menu" 32 PRINT"[O]____________________Open output port" 33 PRINT"[D]____________________Dump first page!" 34 PRINT"[SPACE]________________Continue to dump" 35 PRINT"[ENTER]________________Resume this menu" 36 PRINT"[J]____________________Jump to location" 37 PRINT"[S] Sector toggle: [F] Form - Feeds" 38 PRINT"[T] Track to view [W] Width of CRT"; 39 IFX=1GOTO100ELSEPRINT@258,S$ 40 A$=INKEY$:IFA$=""GOTO40ELSEA=INSTR(I$,A$) 41 ONAGOTO30,50,70,80,80,90,90,95,95,98,98,100,100,220,220,230,230:GOTO40 50 IFX=0GOTO40ELSEX=2:GOSUB150:GOTO110 60 A=INSTR(H$,LEFT$(A$,1)):A=A*16-16:A=A+INSTR(H$,RIGHT$(A$,1))-1:RETURN 70 POKE62972,201:CLEAR50,HIMEM+287:MAXFILES=1:MENU 80 A$="Port 1 CRT, 2 LCD, 3 LPT :":A=1:GOSUB240 81 P=VAL(A$):IFP=0THENP=2ELSEIFP>3GOTO80 82 IFP=3THEND=16ELSED=8 83 IFP=2THENCALL16959 84 IFP=1THENWIDTH40:SCREEN1:CLS:SCREEN0 85 A=0:IFP<3GOTO31ELSEGOSUB86:IFA>0THEND=8:P=2:GOTO300ELSE31 86 C=INP(179)AND6:IFC=6THENA=7ELSEIFC=4THENA=8ELSEA=0 87 RETURN 90 A=3:A$="Begin dump at: ":GOSUB240 91 B$=RIGHT$(A$,2):A$="0"+LEFT$(A$,1):GOSUB60:B=A*256 92 A$=B$:GOSUB60:A=A+B:IFA=0THENI=0ELSEIFA>1279THENI=0ELSEI=FIX(A/D) 93 IFX=0THENX=3:GOTO31 94 IFX=3GOTO31ELSE50 95 A=1:A$="CRT Width: [1]=40 2=80":GOSUB240:A=VAL(A$):IFA<>2THENA=1 96 WIDTH40*A:D=8*A:GOTO31 98 IFP=3THENPRINT#3,CHR$(12);:GOTO31 99 GOSUB86:IFA>0GOTO300ELSELPRINTCHR$(12);:GOTO31 100 'DUMP ROUTINE 101 X=1:TX$=CHR$(48)+CHR$(5)+CHR$(0)+CHR$(0)+CHR$(T)+CHR$(0)+CHR$(S):GOSUB150 102 GOSUB200:IFA=0THENI=0ELSE300 110 'NEXT PAGE (PART OF DUMP) 111 IFI=0THENA=0ELSEA=I*D/256AND255 112 TX$=CHR$(50)+CHR$(4)+CHR$(0)+CHR$(A)+CHR$((I*D)-(A*256))+CHR$(D) 113 GOSUB200:IFA>0GOTO300ELSEIFI=0THENA=0ELSEA=I*D/256AND255 114 IFP=3THENPRINT#3," "; 115 GOSUB124:PRINT#3,RIGHT$(A$,1);:IFI=0GOTO116ELSEA=I*D/256AND255 116 A=(I*D)-(A*256):GOSUB124:PRINT#3,A$+" "; 117 FORC=1TOD:A=ASC(MID$(RX$,C,1)):GOSUB124:PRINT#3,A$+" ";:NEXTC 118 PRINT#3," ";:FORC=1TOD:A$=MID$(RX$,C,1):IFA$>CHR$(31)THENPRINT#3,A$;ELSEPRINT#3,"."; 119 NEXTC:PRINT#3,"":I=I+1 120 IFI*D>1279THENSOUND1180,5:SOUND1280,5:I=0:GOTO40ELSEA$=INKEY$:IFA$<>""GOTO40 121 IF((P=1)AND(IMOD24=0))OR((P=2)AND(IMOD7=0))THENSOUND1280,1:GOTO40 122 IF(P=3)AND(IMOD62=0)THENPRINT#3,STRING$(4,CHR$(13)) 123 GOTO111 124 A$=MID$(H$,(AAND15)+1,1):IFA=0THENA=1ELSEA=(A/16AND15)+1 125 A$=MID$(H$,A,1)+A$:RETURN 150 CLOSE3:OPENP$(P)FOROUTPUTAS3 151 CALL16959:CLS:PRINT"Output Port = "+LEFT$(P$(P),3)+" Track:"+T$+" Sector:"+S$:PRINT@40,"";:RETURN 200 'COM TRANSMIT HANDLER 201 CLOSE1:OPEN"COM:98N1D"FOROUTPUTAS1 202 POKEQ-1,0:C=0:PRINT#1,"ZZ"; 203 FORA=1TOLEN(TX$):B=ASC(MID$(TX$,A,1)):C=C+B:PRINT#1,CHR$(B);:NEXTA 204 PRINT#1,CHR$(NOTCAND255); 210 'COM RECEIVE HANDLER 211 FORA=1TO500:IFPEEK(Q-1)=0THENNEXT:A=3:RETURN 212 IFPEEK(Q)=56ANDPEEK(Q+2)=112THENA=2:RETURN 213 IFPEEK(Q)=56ANDPEEK(Q+2)=0THENA=0:RETURN 214 IFPEEK(Q)<>57THENA=1:RETURN 215 RX$="":FORA=5TO5+D:RX$=RX$+CHR$(PEEK(Q+A)):NEXTA:A=0:RETURN 220 A$="Track :":A=2:GOSUB240:T$=A$ 221 GOSUB60:T=A:IFX=0ORX=3GOTO31ELSE100 230 IFX=3GOTO40ELSEIFX=2GOTO40ELSEIFS=0THENS=1:S$="1":GOTO39 231 S=0:S$="0":GOTO39 240 'SUPERIMPOSE INPUT PROMPT 241 B=LEN(A$)+A+2:C=140-(B/2):PRINT@C,CHR$(240)+STRING$(B-2,CHR$(241))+CHR$(242); 242 PRINT@C+40,CHR$(245)+A$+STRING$(A," ")+CHR$(245); 243 PRINT@C+80,CHR$(246)+STRING$(B-2,CHR$(241))+CHR$(247); 244 IFA=0GOTO249ELSEPRINT@C+41+LEN(A$),"";:A$="000":B=0 245 IFA=.1THENRETURN 246 B$=INPUT$(1):IFB$=CHR$(13)GOTO248 247 A$=A$+B$:B=B+1:IFB=AGOTO248ELSEPRINTB$;:GOTO246 248 A$=RIGHT$(A$,A):RETURN 249 A$=INKEY$:IFA$=""GOTO249ELSERETURN 300 SOUND1280,1:SOUND1180,1:SOUND1180,1:SOUND1280,1:SOUND1180,3 301 ONAGOSUB310,311,312,,,,316,317,318,319 302 A=0:GOSUB240:GOTO30 310 A$="Disk I/O error":RETURN 311 A$="Insert disk":RETURN 312 A$="Drive wont respond - Check cable/power":RETURN 313 ' 314 ' 315 ' 316 A$="Printer off/not connected":RETURN 317 A$="Printer not ready":RETURN 318 A$="CRT not available":RETURN 319 A$="Unexpected Error:"+STR$(B)+" in"+STR$(ERL):RETURN 320 IFERL=84ORERL=96THENA=9:P=2:RESUME300 321 A=10:B=ERR:RESUME300