Listing of file='@DOS' on disk='vmedia/mvp-cs386-1.30-disk2.wvd.zip'
# Sector 539, program filename = '@DOS' 0010 REM %^ @DOS Emulation Program By Kirit Baxi E.A.M.E. R&D 0020 REM Version 1.0 20 JUN 1991 0025 REM 8/10/95 MEB Added syntax checking to FORMAT command to test for drive designator & colon. Lines 460, 895, 896, 897. 0030 REM ******************************************************** 0040 REM * * 0050 REM * @DOS Command Processor * 0060 REM * * 0070 REM ******************************************************** 0080 REM t$()=translate table - P$()=DEVICE TABLE 0100 DIM A$4,B$40,C$(16)32,D$(16),C$2,D$2,E$32,H$8,G$3 : G$="1.0" : REM % GET CPU TYPE : X$=$PSTAT(#PART) 0110 REM SELECT ALT SET : PRINT HEX(0202000E) 0120 REM % IF RUN 1ST TIME DISPLAY VERSION 0130 I1$,I2$=ALL(20) 0140 H$=I4$ : IF STR(H$,1,1)<>"R"THEN DO : W$="A:" : PRINT HEX(0202020E0302050F0E); : PRINTUSING 810;G$ : PRINT : END DO : ELSE PRINT HEX(02050F); 0150 IF W$="A:"THEN GOSUB 820 0160 I4$=ALL(20) : IF W$="A:"THEN DO : N1=2 : N2=3 : END DO : IF W$="B:"THEN DO : N1=3 : N2=2 : END DO : N=N1 0170 FOR X=1TO 16 : READ C$(X) : NEXT X 0180 REM % DOS PROMPT 0190 B$,I$=ALL(20) : E=0 : PRINTUSING "CS DOS Emul\#>";STR(W$,1,1); 0200 LINPUT B$ : IF STR(B$,1,2)=" "THEN 190 0210 $TRAN(B$,T$()) : IF B$="A:"OR B$="B:"THEN GOTO 830 : REM Go and check syntax : GOSUB 680 0220 REM % CHECK IF VALID SYNTAX : IF I$=HEX(000000000000000000000000)THEN I$=ALL(20) 0230 $TRAN(B$,T$()) : I3$=B$ 0240 IF E=99THEN PRINT HEX(0D0E07);"Bad Command or File not found";HEX(0F) : IF E=99THEN GOTO 180 0250 ON AGOTO 310,310,350,380,420,430,430,470,500,510,570,520,580,600,620,670 0260 PRINT HEX(0D0A) : A=0 : GOTO 180 0270 STOP 0280 REM % Commands 0290 DATA "dir","dir /p","dir /w","delete","exit","format a:","format a:/v","t ype","cls","ver","setup"," ","diskcopy a: a:","rename","copy","help" 0300 REM % MAIN COMMAND PROCESS STARTS HERE! 0310 C$=ALL(00) : MAT SEARCHB$,=":"TO C$ : IF VAL(C$,2)=0THEN 330 : IF STR(B$,VAL(C$,2)+1,2)="/W"THEN 350 : GOTO 320 0320 IF STR(B$,VAL(C$,2)-1,1)="C"THEN 340 : IF STR(B$,VAL(C$,2)-1,1)="B"AND W$="A:"THEN N=N2 : IF W$="B:"AND STR(B$,VAL(C$,2)-1,1)="A"THEN N=N2 0330 IF VAL(C$,2)=0THEN N=N1 : LOAD T"@DOSDIRP" 0340 LIST SDC T#1,W : PRINT : GOTO 190 0350 C$=ALL(00) : MAT SEARCHB$,=":"TO C$ : IF VAL(C$,2)=0THEN 370 : GOTO 360 0360 IF STR(B$,VAL(C$,2)-1,1)="B"AND W$="A:"THEN N=N2 : IF W$="B:"AND STR(B$,VAL(C$,2)-1,1)="A"THEN N=N2 0370 IF VAL(C$,2)=0THEN N=N1 : LOAD T"@DOSDIRW" 0380 C$=ALL(00) : I$=ALL(20) : MAT SEARCHB$,=":"TO C$ : D1=VAL(C$,2) : IF D1=0THEN 400 0390 IF STR(B$,VAL(C$,2)-1,1)="B"AND W$="A:"THEN N=N2 : IF W$="B:"AND STR(B$,VAL(C$,2)-1,1)="A"THEN N=N2 : GOTO 410 0400 IF VAL(C$,2)=0THEN DO : N=N1 : C$=ALL(00) : MAT SEARCHSTR(B$,C1+1),=" "TO C$ : C=VAL(C$,2) : I$=STR(B$,C+1) : END DO : GOTO 410 0410 I1$=ALL(20) : MAT SEARCHB$,=" "TO C$ : C=VAL(C$,2) : IF D1=0THEN D1=C : I1$=STR(B$,D1+1,12) : LOAD T"@DOSDEL" 0420 PRINT : LOAD T"@DOSEXIT" 0430 C$=ALL(00) : MAT SEARCHB$,=":"TO C$ : IF VAL(C$,2)=0THEN 450 : GOTO 440 0440 IF STR(B$,VAL(C$,2)-1,1)="B"AND W$="A:"THEN N=N2 : IF W$="B:"AND STR(B$,VAL(C$,2)-1,1)="A"THEN N=N2 0450 IF VAL(C$,2)=0THEN N=N1 : C$=ALL(00) : MAT SEARCHB$,="/"TO C$ : IF VAL(C$,2)=0THEN 460 : I4$=STR(B$,VAL(C$,2),2) : STR(I4$,2,1)=STR(I4$,2,1)OR HEX(20) 0460 IF STR(B$,8,2)=" "THEN 896 : IF STR(B$,8,1)<>"A"AND STR(B$,8,1)<>"B"THEN 895 : IF STR(B$,8,2)<>"A:"AND STR(B$,8,2)<>"B:"THEN 897 : LOAD T"@DOSFORM" 0470 GOSUB 850 0480 C1=VAL(C$,2) : I$=STR(B$,C1+1) 0490 C$=ALL(00) : MAT SEARCH"WT",=STR(X$,9,1)TO C$ : IF VAL(C$,2)=0THEN 890 : LOAD T"@DOSTYPE" 0500 PRINT HEX(03); : GOTO 180 0510 PRINT HEX(0D0A0E); : PRINTUSING 810;G$ : PRINT : GOTO 180 0520 C$=ALL(00) : I$=ALL(20) : MAT SEARCHB$,=":"TO C$ : IF VAL(C$,2)=0THEN 540 0530 IF STR(B$,VAL(C$,2)-1,1)="B"AND W$="A:"THEN N=N2 : IF W$="B:"AND STR(B$,VAL(C$,2)-1,1)="A"THEN N=N2 : GOTO 550 0540 IF VAL(C$,2)=0THEN DO : N=N1 : C$=ALL(00) : MAT SEARCHSTR(B$,C1+1),=" "TO C$ : C=VAL(C$,2) : I$=STR(B$,C+1) : END DO : GOTO 560 0550 C1=VAL(C$,2) : I$=STR(B$,C1+1) 0560 C$=ALL(00) : MAT SEARCH"WT",=STR(X$,9,1)TO C$ : IF VAL(C$,2)=0THEN 890 : LOAD T"@DOSTYLP" 0570 LOAD T"@DOSSET" 0580 GOSUB 850 : C$=ALL(00) : MAT SEARCHB$,=":"TO C$ : C=VAL(C$,2) : IF C=0THEN 590 : IF C<>0THEN DO : I1$=STR(B$,C-1,2) : MAT SEARCHSTR(B$,C+1),=":"TO C$ : C1=VAL(C$,2) : IF C1<>0THEN I2$=STR(B$,(C+C1)-1,2) : END DO 0590 LOAD T"@DOSDCPY" 0600 GOSUB 850 0610 I1$,I2$=ALL(20) : C$,D$=ALL(00) : MAT SEARCHB$,=" "TO C$ : C=VAL(C$,2) : D=LEN(B$) : IF D1=0THEN D1=C : MAT SEARCHSTR(B$,D1+1),=" "TO C$ : C1=VAL(C$,2) : I1$=STR(B$,D1+1,C1-1) : I2$=STR(B$,C1+D1+1) : LOAD T"@DOSREN" 0620 GOSUB 850 : IF STR(B$,F+1,2)="A:"THEN N=N1 : IF STR(B$,F+1,2)="B:"THEN N=3 : IF STR(B$,F+2,1)<>":"THEN N=N1 0630 I1$,I2$=ALL(20) : C$,D$=ALL(00) : MAT SEARCHB$,=" "TO C$ : C=VAL(C$,2) : D=LEN(B$) : I1$=STR(B$,C+1) : MAT SEARCHI1$,=" "TO C$ : C1=VAL(C$,2) : I2$=STR(B$,C+C1+1) : STR(I1$,C1)=ALL(20) 0640 IF STR(I1$,1,2)="C:"OR STR(I2$,1,2)="C:"THEN 650 : ELSE GOTO 660 0650 C$=ALL(00) : MAT SEARCH"WT",=STR(X$,9,1)TO C$ : IF VAL(C$,2)=0THEN 890 : LOAD T"@DOSCYCS" 0660 C$=ALL(00) : MAT SEARCH"WT",=STR(X$,9,1)TO C$ : IF VAL(C$,2)=0THEN 890 : LOAD T"@DOSCOPY" 0670 LOAD T"@DOSHELP" 0680 REM % Syntax Check routine 0690 REM CONVERT TO LOWER CASE : B$=B$OR E$ : A,B,E,O,P,Q,R,S=0 0700 O=POS(B$=" ") : IF O<4THEN E=99 : IF O<4THEN 800 : O1=LEN(B$) : FOR X=1TO 16 : IF STR(B$,1,O-1)=STR(C$(X),1,O-1)THEN A=X : IF A>0THEN X=17 : NEXT X : IF A=0THEN E=99 0710 P=POS(B$="/") : IF P=0THEN Q=POS(B$=">") : R=POS(B$=":") : S=POS(B$=".") : IF P<>0OR Q<>0THEN 720 : ELSE GOTO 730 0720 FOR X=1TO 16 : IF STR(B$,1,P+1)=STR(C$(X),1,P+1)THEN B=X : IF B>0THEN X=17 : NEXT X 0730 IF B<>0THEN A=B 0740 IF P<>0THEN I$=STR(B$,P,2) 0750 IF S<>0THEN I$=STR(B$,O+1,S+3) 0760 IF Q<>0THEN I$=STR(B$,O+1,(Q-O)-1) : IF Q<>0THEN A=12 0770 IF A=0AND P=0AND Q=0AND S=0THEN E=99 0780 IF LEN(I$)>1THEN I$=I$XOR E$ : $TRAN(I$,HEX(2E0E))R 0790 IF LEN(B$)=5AND STR(B$,1,15)="dir a"THEN E=99 : ELSE IF LEN(B$)=5AND STR(B$,1,15)="dir b"THEN E=99 : ELSE IF LEN(B$)=5AND STR(B$,1,15)="dir c"THEN E=99 0800 RETURN 0810 %CS DOS Emulation Version ### (c) Wang Laboratories Inc., 1991 0820 N1=2 : N2=3 : RETURN 0830 REM % SET DEFAULT DRIVE IF REQUESTED : IF B$="A:"THEN DO : N1=2 : N2=3 : W$=B$ : END DO : IF B$="B:"THEN DO : N1=3 : N2=2 : W$=B$ : END DO 0840 GOTO 180 0850 C$=ALL(00) : I$=ALL(20) : MAT SEARCHB$,=" "TO C$ : F=VAL(C$,2) : C$=ALL(00) : MAT SEARCHB$,=":"TO C$ : D1=VAL(C$,2) : IF D1=0THEN 870 0860 IF STR(B$,VAL(C$,2)-1,1)="B"AND W$="A:"THEN N=N2 : IF W$="B:"AND STR(B$,VAL(C$,2)-1,1)="B:"THEN N=N1 : GOTO 880 0870 IF VAL(C$,2)=0THEN DO : N=N1 : C$=ALL(00) : MAT SEARCHSTR(B$,C1+1),=" "TO C$ : C=VAL(C$,2) : I$=STR(B$,C+1) : END DO 0880 RETURN 0890 PRINT : PRINT HEX(070E);"Command supported on CS 386 systems only" : PRINT : GOTO 190 0895 PRINT HEX(0D0E07);"Invalid drive specification (only drive A or B support ed with format)";HEX(0F) : GOTO 180 0896 PRINT HEX(0D0E07);"Required parameter missing (drive designation & colon) ";HEX(0F) : GOTO 180 0897 PRINT HEX(0D0E07);"Parameter format not correct (drive designation & colo n)";HEX(0F) : GOTO 180 0900 STOP " IF YOU ARE HERE SOMETHING IS WRONG!!!" 0910 REM % EDIT FN'3 REPEATS LAST COMMAND 0920 DEFFN'3 : $TRAN(I3$,HEX(202D))R : B$=STR(I3$,1,LEN(I3$)) : PRINT HEX(0C); : PRINTUSING "CS DOS Emul\#>";STR(W$,1,1); : GOTO 200 0930 DEFFN'31 : RESAVE T"@DOS"