image of READY prompt

Wang2200.org

Listing of file='2229SUB' on disk='vmedia/mvp-diag-2.6.2.wvd.zip'

# Sector 1590, program filename = '2229SUB'
5000 REM % "2229SUB" - part of 2229 utilities package
5005 REM ST 01/21/1983
5010 DIM U8$2
5100 DEFFN'102
   : REM % BOARD STATUS
5115 S$=ALL(20)
   : R$=ALL(01)
5120 $GIO#4(4402 8701 1800 C340,R$)STR(S$,1,VAL(STR(R$,1,1)))
   : RETURN
5250 DEFFN'104
   : REM % LOAD TAPE
5260 PRINT HEX(020404000E)
   : M$="Loading Tape"
   : GOSUB '160
   : $GIO#4(4404 8701,R$)
   : PRINT HEX(0F)
   : GOSUB '222
   : REM GET ERROR
   : IF E=0THEN RETURN
   : IF E<>3THEN 7540
5275 GOSUB '208
   : GOTO 5260
5300 DEFFN'105
   : REM % UNLOAD TAPE
5305 PRINT HEX(020404000E)
   : M$="Unloading tape"
   : GOSUB '160
5310 $GIO#4(4405 8701,R$)
   : PRINT HEX(0F)
   : GOSUB '222
5315 IF E=0THEN RETURN
   : IF E<>3THEN 7540
   : GOSUB '208
   : GOTO 5305
5400 DEFFN'108
   : REM % SPACE IBG
5410 $GIO#4(4408 8701,R$)
   : GOSUB '222
   : RETURN
5500 DEFFN'110
   : REM %SPACE FILE MARK
5510 M$="Searching for file mark"
   : GOSUB '160
   : F3=0
   : REM NO FILE MARK
5520 $GIO#4(440A 8701,R$)
   : GOSUB '222
5530 IF E=2THEN RETURN
   : IF E=7THEN F3=1
   : IF F3=1THEN RETURN
   : IF E<>3THEN 7540
   : GOSUB '208
   : GOTO 5510
5600 DEFFN'111
   : REM % SPACE REVERSE FILE MARK
   : $GIO#4(440B 8701,R$)
   : GOSUB '222
   : IF E=0OR E=7OR E=2THEN RETURN
   : GOTO 7540
5650 DEFFN'112
   : REM %READ
5660 $GIO#4 (440C 8701,R$)
   : B=0
   : GOSUB '222
   : IF E=0THEN 5680
   : IF E<>7THEN 5665
   : F3=1
   : REM FM FOUND
   : RETURN
5665 IF E=2THEN STOP "OUT OF TAPE"
   : IF E=6THEN STOP "DATA ERROR ON READ"
   : GOSUB '208
   : GOTO 5660
5680 $GIO#4(8703 8704,R$)
   : REM GET BYTE COUNT
5685 IF F3=1THEN 5690
   : REM JUMP IF PREVIOUS  RECORD WAS FM
   : $GIO#4(1800 C340 1936 1801 C340,R$)C$; STR(A1$(),1,VAL(STR(R$,3,2),2))
   : GOTO 5700
5690 REM PREVIOUS RECORD WAS FILE MARK, SO THIS IS LABEL
   : $GIO#4(1800 C340,R$)STR(A1$(),1,VAL(STR(R$,3,2),2))
5700 B=VAL(STR(R$,3,2),2)
   : REM # OF BYTES
   : IF F3=1THEN 5710
   : C=VAL(C$,2)
   : C1=C1+1
   : REM BLOCK COUNT
5710 F3=0
   : RETURN
5750 DEFFN'155
   : REM % CHANGE WRITE CURRENT FOR 600 FOOT TAPE
5760 $GIO#4(4432 8701,R$)
   : GOSUB '222
   : RETURN
5790 DEFFN'213
   : REM %WRITE LABEL
   : W=1
   : B=256
   : GOTO 5805
5800 DEFFN'113
   : REM %WRITE RECORD
   : W=0
5805 STR(R$,3,2)=BIN(B,2)
   : IF W=1THEN 5810
   : $GIO(1935,R$)
   : REM INC BYTE COUNT BY 2 IF NOT LABEL
5810 STR(R$,2,1)=HEX(00)
   : $GIO#4(440D 4230 4240 8701,R$)
   : GOSUB '222
   : IF E=0THEN 5820
   : IF E=5THEN GOSUB '220
   : REM END WRITE IF NECESSARY
   : IF E=2THEN RETURN
   : IF E<>3THEN 7540
   : GOSUB '208
   : GOTO 5810
5820 IF W=1THEN 5840
   : C=C+1
   : C$=BIN(C,2)
   : $GIO(1936,R$)
   : REM DEC COUNT
5830 $GIO#4(1300 A000,R$)C$
5840 $GIO#4(1300 A000,R$)STR(A1$(),1,VAL(STR(R$,3,2),2))
5845 IF W=1THEN GOSUB '220
   : REM IF LABEL DO ENDWRITE
   : RETURN
6000 DEFFN'115
   : REM % WRITE FILE MARK
6005 $GIO#4(440F 8701,R$)
   : GOSUB '222
   : IF E=0 OR E = 2 THEN RETURN
   : IF E<>3THEN 7540
6010 GOSUB '208
   : GOTO 6005
6400 DEFFN'220
   : REM % ENDWRITE
6410 STR(R$,2,1)=HEX(00)
   : $GIO#4 (4420 8701 8702,R$)
   : GOSUB '222
   : RETURN
6500 DEFFN'160
   : REM PRINT OUT MESSAGE
   : PRINT HEX(06),AT(10,0,320);M$
   : RETURN
7000 DEFFN'240
   : REM % GET VOLUME PARAMETERS
7005 PRINT HEX(06);AT(4,0,);"Tape Volume Name"
   : PRINT AT(5,0);"Date (ddmmyy)"
   : PRINT AT(6,0);"Time (hhmmss)"
   : PRINT AT(7,0);"Tape Length"
7010 PRINT AT(4,0);"Tape Volume Name";
   : PRINT AT(4,22);
   : STR(V$(),5,8)=ALL(20)
   : LINPUT -STR(V$(),5,8)
   : ERRORPRINT HEX(07)
   : GOTO 7010
7015 STR(V$(),13,2)="01"
   : REM FIRST VOLUME STARTS WITH ASCII 01
7020 PRINT AT(5,0);"Date (ddmmyy)";
   : PRINT AT(5,22);
   : D1$="        "
   : LINPUT -D1$
   : ERRORPRINT HEX(07)
   : GOTO 7020
7025 STR(V$(),17,6)=D1$
7030 PRINT AT(6,0);"Time (hhmmss)";
   : PRINT AT(6,22);
   : T1$="      "
   : LINPUT -T1$
   : ERRORPRINT HEX(07)
   : GOTO 7030
7035 STR(V$(),23,6)=T1$
7040 L1$="450"
   : PRINT AT(7,0);"Tape Length";
   : PRINT AT(7,22);
   : LINPUT -L1$
   : ERRORPRINT HEX(07)
   : GOTO 7040
7045 CONVERT L1$TO L
   : ERRORGOTO 7040
7050 IF L=300OR L=450OR L=600THEN 7055
   : PRINT HEX(07)
   : GOTO 7040
7055 IF L=600THEN GOSUB '155
   : STR(V$(),38)=BIN((L/300)*2-1)
   : REM TAPE LENGTH (1 = 300, 2 = 450, 3 = 600)
7058 PRINT AT(8,0);"User comments";AT(8,22);
   : STR(V$(),202,55)=" "
   : LINPUT -STR(V$(),202,55)
7060 STR(V$(),39,8)=STR(V$(),5,8)
   : REM PREVIOUS VOLUME NAME IS SAME AS THIS VOLUME NAME
7065 STR(V$(),1,4)="VHDR"
   : REM VOLUME HEADER
7070 STR(V$(),15,2)=BIN(16386,2)
   : REM MAX BLOCK SIZE
7075 STR(V$(),29,1)=HEX(01)
   : REM LABEL FORMAT VERSION ID
7080 REM ACCESS CONTROL WORD EMPTY FOR NOW
7085 STR(V$(),47,1)=BIN(01)
   : AND (STR(S$,6,1),01)
   : IF STR(S$,6,1)=HEX(01)THEN STR(V$(),47,1)=BIN(02)
   : REM # OF TRACKS - STATUS ('102) MUST BE DONE FIRST
7088 STR(V$(),48,1)=HEX(00)
   : REM USER DEFINED BYTE
7090 STR(V$(),49,6)="999999"
   : RETURN
7100 REM % Initialize File Label
7105 DEFFN'241
7115 STR(F$(),5,2)=BIN(0,2)
   : REM TAPE FILE SEQ #
7120 STR(F$(),7,1)=BIN(0)
   : REM TAPE FILE SECTION NUMBER
7125 C=0
   : GOSUB '243
   : REM BC
7130 STR(F$(),16,6)=D1$
   : REM DATE
7135 STR(F$(),22,6)=T1$
   : REM TIME
7145 STR(F$(),30,1)=HEX(FF)
   : REM STANDARD RECORD SIZE
7150 STR(F$(),31,2)=BIN(16386,2)
   : REM BLOCK SIZE
7155 STR(F$(),33,2)=BIN(256,2)
   : REM RECORD SIZE
7160 STR(F$(),35,1)=HEX(11)
   : REM SYSTEM ID
7165 STR(F$(),36,8)=ALL(00)
   : REM USER DEFINED BYTES
7180 RETURN
7200 REM % INIT FILE HEADER
7205 DEFFN'245
   : STR(F$(),1,4)="FHDR"
7210 IF C2=1THEN ADD(STR(F$(),7,1),01)
   : ELSE STR(F$(),7,1)=HEX(01)
7215 C=0
   : GOSUB '243
   : REM CLEAR BLOCK COUNT
7220 STR(F$(),44,1)=HEX(00)
   : REM CONTINUATION FLAG
7223 IF C2=0THEN STR(F$(),8,8)=STR(V$(),5,8)
   : REM IF FILE IS NOT CONTINUED THEN START OF FILE IS ON THIS VOLUME
   : REM ELSE FIRST TERMINATION OF FILE WILL SET TO PROPER NAME
7225 RETURN
7250 DEFFN'243
   : REM % COMPUTE BLOCK COUNT
7255 STR(F$(),28,2)=BIN(C,2)
7260 RETURN
7300 REM % SET UP FILE TRAILER LABEL
7305 DEFFN'242
   : STR(F$(),1,4)="FEND"
7310 GOSUB '243
   : REM BLOCK COUNT
7315 STR(F$(),44,1)=HEX(00)
   : C2=0
   : IF S1>G3THEN 7320
   : STR(F$(),44,1)=HEX(FF)
   : REM SET CONT FLAG IF NECESSARY
   : C2=1
   : REM SET BASIC CONT FLAG
7320 RETURN
7500 REM % CHECK ERROR RETURN FOR IMMEDIATE MODE COMMANDS
7510 DEFFN'222
   : REM % Check error return
   : E=VAL(STR(R$,1,1))
   : IF E=0THEN RETURN
   : RESTORE LINE7520,E
   : READ E$
   : IF E=2THEN C3=1
   : REM SET OUT OF TAPE FLAG
   : IF E=8THEN 7600
   : RETURN
7520 DATA "ILLEGAL COMMAND","OUT OF TAPE","TAPE NOT READY","WRITE PROTECTED","
     RESULTS PENDING","DATA ERROR","FILE MARK FOUND","TAPE FAULT"
7530 REM % Errors
7540 PRINT "Error ";E;" - ";E$
   : STOP
7560 DEFFN'152
   : REM % WAIT FOR RETURN KEY
7565 PRINT
   : PRINT "Press RETURN"
7570 DEFFN'154
   : KEYIN K$
7580 KEYIN K$,7580,7580
   : RETURN
   : REM FLUSH EXTRA KEYSTROKES
7600 REM PROCESS DRIVE/CONTROLLER FAULT
7610 PRINT HEX(06),AT(10,0);"Error 8 - Drive/Controller fault"
   : GOSUB '102
   : REM TAKE STATUS
   : PRINT
7620 PRINTUSING 7700,"Controller PROM rev",STR(S$,1,2)
7625 PRINTUSING 7700,"Software rev",STR(S$,3,2)
7630 PRINTUSING 7700,"Tape drive PROM rev",VAL(STR(S$,5,1))
7635 HEXUNPACKSTR(S$,6,1)TO U8$
   : PRINTUSING 7700,"Controller device switch",U8$
7640 HEXUNPACKSTR(S$,7,1)TO U8$
   : PRINTUSING 7700,"Tape drive STATUS 1",U8$
7645 HEXUNPACKSTR(S$,8,1)TO U8$
   : PRINTUSING 7700,"Tape drive STATUS 2",U8$
7650 PRINTUSING 7700,"Drive/controller fault",VAL(STR(S$,10,1))
   : PRINT
   : STOP
7700 %########################   ##
8000 DEFFN'225
   : REM % FILL UP BUFFER WITH DATA
   : REM START WITH SECTOR S1
   : REM FILL UNTIL BUFFER IS FULL OR S1 = G3(LAST)
   : REM EXIT WITH S1 POINTING TO NEXT SECTOR
8020 $OPEN #2
   : P=1
   : REM POINTER INTO BUFFER
8025 C(4)=C(3)
   : C(3)=C(2)
   : C(2)=C(1)
   : C(1)=S1
   : REM ROTATE SECTOR ARRAY
8030 DATA LOAD BA T#2,(S1,S1)STR(A1$(),P,256)
   : ERRORGOTO 8600
8040 P=P+256
   : REM UPDATE POINTER
   : IF S1>G3THEN 8070
   : REM IF NEXT SECTOR > LAST THEN DONE
8060 IF P<16384THEN 8030
   : REM GET MORE DATA
8070 $CLOSE#2
   : STR(R$,3,2)=BIN(P-1,2)
   : REM # OF BYTES
   : RETURN
8500 DEFFN'208
   : REM % ERROR MESSAGE FOR TAPE UNIT NOT READY
8510 GOSUB '102
   : M$="Tape drive is not ready "
   : GOSUB '160
   : GOSUB '152
   : RETURN
8567 DEFFN'151
   : PRINT HEX(03);AT(0,40-(LEN(T$)/2));HEX(020402040E);T$;HEX(0F)
   : RETURN
8600 $CLOSE#2
   : PRINT "DISK ERROR ";ERR
   : STOP #
8700 DEFFN'126
   : RETURN CLEAR ALL
   : GOTO 20
8710 DEFFN'127
   : RETURN CLEAR ALL
   : $PSTAT=".2229"
   : F$=".2229"
   : LOAD RUN
8720 DEFFN'153
   : PRINT AT(18,0);"Press FN/TAB to restart current utility"
   : PRINT "Press Shift FN/TAB to return to menu"
   : RETURN