Listing of file='@DOS' on disk='vmedia/turbo-1.30.01.wvd.zip'
# Sector 537, 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
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 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
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"