Listing of file='DISKCM1' on disk='vmedia/vp-boot-2.3.wvd.zip'
# Sector 970, program filename = 'DISKCM1'
0010 REM %DISKCMND -- $GIO SEQUENCES FOR NEW DISK COMMANDS
: REM 5/29/78 BP
0020 REM
: REM O$,O1$ -- OPTIONS
: REM D$ -- DISK ADDRESS
: REM D$() -- DISK ADDRESS TABLE
: REM K$ -- KEY CODE
: REM S,S$ -- SECTOR ADDRESS
: REM G$ -- $GIO REGISTERS
: REM G$() -- SECTOR DATA
: REM F$ -- FS COMMAND
0025 COM D$3
: DIM O$64,O1$1,D$(1)64,L$(1)2,K$1,S$3,G$10,G$(4)64,F$1
0030 IF D$<>" "THEN 40
: D$="310"
: SELECT #1 310
0040 REM %DISPLAY OPTIONS--------------------------
: PRINT HEX(0D03);TAB(10);"*** $GIO SEQUENCES FOR NEW DISK COMMANDS ***"
: PRINT
: PRINT "OPTIONS:";TAB(40);"DISK ADDRESS = /";D$
: O1$=HEX(00)
: RESTORE
0050 READ O$
: IF O$="no more options" THEN 60
: PRINT " '";
: HEXPRINT O1$;
: PRINT " ";O$
: ADD(O1$,01)
: GOTO 50
0060 PRINT
: PRINT "SF' KEY?";
0070 KEYIN K$,70,80
: GOTO 70
0080 ON VAL(K$) GOTO 90,200,240,280,320,360,400,450
: GOTO 40
0090 REM %CHANGE DISK ADDRESS-------------------------------------
: PRINT HEX(0D03);"CHANGE DISK ADDRESS --"
: PRINT
0100 INPUT "DISK ADDRESS (310,B10,320,B20,330,B30,360,B60)",D$
: D$(1)="310B10320B20330B30360B60"
: MAT SEARCH D$(),=D$ TO L$()
: ON (VAL(STR(L$(1),2))+2)/3 GOTO 110,120,130,140,150,160,170,180
: GOTO 100
0110 SELECT #1 310
: GOTO 190
0120 SELECT #1 B10
: GOTO 190
0130 SELECT #1 320
: GOTO 190
0140 SELECT #1 B20
: GOTO 190
0150 SELECT #1 330
: GOTO 190
0160 SELECT #1 B30
: GOTO 190
0170 SELECT #1 360
: GOTO 190
0180 SELECT #1 B60
: GOTO 190
0190 GOTO 40
0200 REM %FORMAT PLATTER------------------------------------------
: GOTO 60
: PRINT HEX(0D03);"FORMAT PLATTER /";D$;" --"
: PRINT
: PRINT "PRESS 'CONTINUE' TO FORMAT";
0210 KEYIN K$,220,210
: GOTO 210
0220 IF K$<>HEX(84) THEN 210
: G$=HEX(20)
: IF STR(D$,1,1)="3" THEN 230
: G$=HEX(30)
0230 PRINT HEX(0D);TAB(63);HEX(0D);
: PRINT "FORMATTING...";
: $GIO FORMAT SECTOR #1(0600 0700 70A0 68C0 7040 6A10 6802 4270 8B67,G$)
: PRINT HEX(0D);"FORMATTING COMPLETE"
: GOTO 60
0240 REM %FORMAT SECTOR------------------------------------------
: GOSUB 500
: STR(G$,2,3)=S$
0250 KEYIN K$,260,250
: REM GOTO 250
: K$=HEX(84)
0260 IF K$<>HEX(84) THEN 250
: G$=HEX(20)
: IF STR(D$,1,1)="3" THEN 270
: G$=HEX(30)
0270 STR(G$,2,3)=S$
: $GIO FORMAT SECTOR #1(0600 0700 70A0 68C0 7040 6A10 6803 6A20 6A30 6240 8
705 1704 1156 1576 4270 8B67,G$)
: GOTO 240
0280 REM %READ SECTOR HEADER ------------------------------------
: PRINT HEX(0D03);"READ SECTOR HEADER --"
: PRINT
: GOSUB 500
: STR(G$,2,3)=S$
: PRINT
: PRINT "PRESS 'CONTINUE' TO READ";
0290 KEYIN K$,300,290
: GOTO 290
0300 IF K$<>HEX(84) THEN 290
: G$=HEX(20)
: IF STR(D$,1,1)="3" THEN 310
: G$=HEX(30)
0310 PRINT HEX(0D);TAB(63);HEX(0D);
: PRINT "READING...";
: STR(G$,2,3)=S$
: $GIO READ HEADER #1(0600 0700 70A0 68C0 7040 6A10 6804 6A20 6A30 6240 870
5 1704 1156 1576 4000 8701 8602,G$)
: PRINT HEX(0D);"READ COMPLETE. HEADER = ";
: HEXPRINT STR(G$,1,2)
: GOTO 60
0320 REM %CLEAR ERROR COUNT -------------------------------------
: PRINT HEX(0D03);"CLEAR ERROR COUNT --"
: PRINT
: PRINT "PRESS 'CONTINUE' TO CLEAR COUNT";
0330 KEYIN K$,340,330
: GOTO 330
0340 IF K$<>HEX(84) THEN 330
: G$=HEX(20)
: IF STR(D$,1,1)="3" THEN 350
: G$=HEX(30)
0350 PRINT HEX(0D);TAB(63);HEX(0D);
: PRINT "CLEARING...";
: $GIO CLEAR ERROR COUNT #1(0600 0700 70A0 68C0 7040 6A10 6808 4000 8700,G$
)
: PRINT HEX(0D);"ERROR COUNT CLEARED"
: GOTO 60
0360 REM %READ ERROR COUNT -------------------------------------
: PRINT HEX(0D03);"READ ERROR COUNT --"
: PRINT
: PRINT "PRESS 'CONTINUE' TO READ COUNT";
0370 KEYIN K$,380,370
: GOTO 370
0380 IF K$<>HEX(84) THEN 370
: G$=HEX(20)
: IF STR(D$,1,1)="3" THEN 390
: G$=HEX(30)
0390 PRINT HEX(0D);TAB(63);HEX(0D);
: PRINT "READING...";
: $GIO READ ERROR COUNT #1(0600 0700 70A0 68C0 7040 6A10 6809 4000 8701 860
2 8603,G$)
: PRINT HEX(0D);"ERROR COUNT = ";
: HEXPRINT STR(G$,1,3)
: GOTO 60
0400 REM %READ BAD SECTOR --------------------------------------
: GOSUB 500
: STR(G$,2,3)=S$
0410 KEYIN K$,420,410
: K$=HEX(84)
0420 IF K$<>HEX(84) THEN 410
: G$=HEX(00)
: IF STR(D$,1,1)="3" THEN 430
: G$=HEX(10)
0430 STR(G$,2,3)=S$
: $GIO READ BAD SECTOR #1(0600 0700 70A0 68C0 7040 6A10 6A30 6240 8705 1704
1156 1576 4270 8367 C640 8605,G$)G$()
0440 REM HEXPRINT G$()
: GOSUB 8000
: GOTO 400
0450 REM %FIELD SERVICE COMMANDS -------------------------------
: PRINT HEX(0D03);"FIELD SERVICE COMMAND --"
: PRINT
: GOSUB 490
: PRINT
: PRINT "PRESS 'CONTINUE' TO START";
0460 KEYIN K$,470,460
: GOTO 460
0470 IF K$<>HEX(84) THEN 460
: STR(G$,1,1)=HEX(20)
: IF STR(D$,1,1)="3" THEN 480
: STR(G$,1,1)=HEX(30)
0480 PRINT HEX(0D);TAB(63);HEX(0D);
: PRINT "EXECUTING...";
: $GIO FS COMMAND #1(0600 0700 70A0 68C0 7040 6A10 6A20 4000 8700,G$)G$()
: PRINT HEX(0D);
: STOP "ERROR -- SHOULD NEVER GET HERE."
: GOTO 60
0490 REM GET FS COMMAND
: INPUT "COMMAND (A-F)",F$
: IF F$<"A" THEN 490
: IF F$>"F" THEN 490
: BIN(STR(G$,2,1))=VAL(F$)-55
: RETURN
0500 REM %GET SECTOR ADDRESS--------------
: REM RETURN -- S$=SECTOR ADDRESS
: G=G+1
: S=G
: REM INPUT "SECTOR ADDRESS (default = 0)",S
: BIN(S$)=S/65536
: S=S-VAL(S$)*65536
: BIN(STR(S$,2))=S/256
: S=S-VAL(STR(S$,2))*256
: BIN(STR(S$,3))=S
: PRINT
: PRINT G;
: RETURN
0510 REM %OPTIONS
: DATA "MENU","CHANGE DISK ADDRESS","FORMAT PLATTER","FORMAT SECTOR","READ
SECTOR HEADER","CLEAR ERROR COUNT","READ ERROR COUNT","READ BAD SECTOR","
FIELD SERVICE COMMANDS"
0520 DATA "no more options"
8000 FOR N=1 TO 70
: IF STR(G$(),N,1)<HEX(30) OR STR(G$(),N,1)>HEX(7A)THEN 8050
8010 PRINT STR(G$(),N,1);
8030 NEXT N
: RETURN
8050 PRINT ".";
: GOTO 8030