image of READY prompt

Wang2200.org

Listing of file='@TO.DISK' on disk='vmedia/mvp-cs386-1.30-disk2.wvd.zip'

# Sector 790, program filename = '@TO.DISK'
0010 REM %.@TO.DISK  04/09/90-- Disk to Disk  --
0012 PRINT HEX(03);AT(0,26);"*** DISK FILE COPY UTILITY ***"
0020 DIM T1$(250)1,S0$(8)124,X0$3,X0$(2)3,Z0$80,X0,Z1$8,K$1,M$2
0030 DIM D8$80,N$8,N1$80,D$(16)16,S$3,Q$1,F1$8,A$80,B$1,Z9$(16)16
0035 REM .Create Ref file leaves E=#items, D$=Source disk, N$(E names)
0040 S8,D9=0
   : F=E
   : Z0$=" "
0045 IF D0<3THEN 56
   : Z0$="From Disk.Image = "&F$
   : SELECT #2<D$>
   : LIMITS T#2,F$,S8,A,A,A
0050 DATA LOAD BA T#2,(S8)D$()
   : AND (STR(D$(),2,1),7F)
   : E9=VAL(STR(D$(),2,1))
0056 PRINT AT(1,40-LEN(Z0$)/2);Z0$;AT(2,35);F;"files"
   : X0$(1)=D$
0063 REM X0 contains processing mode
   : REM X0=1  => Copy Only
   : REM X0=2  => Copy & Verify
0070 REM Print Menu
   : REM Reset Restore Flag
   : Z1$="JUNK0000"
   : S,X1,N=0
   : GOSUB '50(S9$," ")
0080 ON R1+2GOTO 100,100,112
0100 REM Cancel; SHIFT Cancel
   : GOSUB '60("(terminated)",23,0,80)
0105 LOAD RUN T"START"
   : ERRORGOSUB '60(" ",23,0,80)
   : GOTO 70
0112 IF X0$(1)<>" "THEN 113
   : REM no origin platter selected
   : S9$=HEX(F218010132F902)
   : GOTO 120
0113 IF X0$(2)<>" "THEN 130
   : REM no destination platter selected
   : S9$=HEX(F218010132F903)
0120 PRINT HEX(07);
   : GOSUB '60("Information Required",23,0,80)
   : GOTO 70
0130 GOSUB '100(X0$(1))
   : X0$(1)=S$
   : IF Q$=" "THEN 150
0140 PRINT HEX(07);
   : GOSUB '60("Invalid Device Address",23,0,80)
   : S9$=HEX(F218010132F902)
   : GOTO 70
0150 GOSUB '100(X0$(2))
   : X0$(2)=S$
   : IF Q$=" "THEN 163
0160 PRINT HEX(07);
   : GOSUB '60("Invalid Device Address",23,0,80)
   : S9$=HEX(F218010132F903)
   : GOTO 70
0163 IF X0$(1)<>X0$(2)THEN 165
   : IF D0>1THEN 165
   : PRINT HEX(07);
   : GOSUB '60("Duplicate Device Address",23,0,80)
   : S9$=HEX(F218010132F902)
   : GOTO 70
0165 REM #1 => Origin
   : SELECT #1<X0$(1)>
   : $OPEN #1
   : ERRORGOTO 140
0166 REM #2 => Destination
   : $CLOSE#1
   : SELECT #2<X0$(2)>
   : $OPEN #2
   : ERRORGOTO 160
0167 $CLOSE#2
0168 PRINT AT(9,40);" Cat.    Cur.     Max."
   : PRINT AT(10,40);
   : DATA LOAD BA T#1,(S8,A)D$()
   : ERRORINIT(00)D$()
0170 IF STR(D$(),,2)=HEX(0000)THEN 182
   : GOSUB 190
   : GOSUB 180
   : GOTO 720
0180 PRINT AT(11,40);
   : DATA LOAD BA T#2,(0,A)D$()
   : ERRORINIT(00)D$()
0182 IF STR(D$(),,2)>HEX(0000)THEN 190
   : PRINT HEX(06);"DISK ERROR: Unformatted or no catalog"
   : PRINT AT(20,62,17);"RUN - Retry"
0185 KEYIN K$
   : ON POS(HEX(50F0820D)=K$)+1GOTO 185
   : PRINT AT(10,40,40)
   : PRINT AT(11,40,40)
   : GOTO 70
0190 IF STR(D$(),,1)=HEX(02)THEN PRINTUSING "#### ######## ########",VAL(STR(D
     $(),3)),VAL(STR(D$(),4),3)-1,VAL(STR(D$(),7),3)-1
   : ELSE PRINTUSING "#### ######## ########",VAL(STR(D$(),2)),VAL(STR(D$(),3)
     ,2)-1,VAL(STR(D$(),5),2)-1
   : RETURN
0720 REM
0730 GOSUB '60(" ",20,1,60)
   : GOSUB '60(" ",21,0,80+50)
   : GOSUB '60("Start Copy ?",23,0,80)
0740 KEYIN K$
   : ON POS(HEX(8250F0)=K$)+1GOTO 740,2010
   : GOSUB '60(" ",23,0,80)
   : GOTO 70
1990 REM %^.Disk to Disk (file by file)
2000 %Processing File  ### : ########   Sectors = ####
2010 REM Begin Installation
2020 GOSUB '60(" ",20,0,4*80)
2030 PRINT HEX(06);AT(18,1,80);
   : PRINTUSING 2000;
   : PRINT HEX(05);
2040 GOSUB '155
   : IF N$=" "THEN 2090
2050 GOSUB '154(N$)
2070 PRINT AT(22,0,80)
   : PRINT AT(23,0,80)
   : N=N+1
   : PRINT AT(18,0);HEX(020402000E06);
   : PRINTUSING 2000,N,N$,B1-A1+1
   : PRINT HEX(0F);AT(19,0,80);STR(N1$,10)
   : GOSUB 2120
2075 IF D1<>3THEN 2080
   : GOSUB '229(2,N$)
   : IF STR(Z9$(Z6),2,1)<>HEX(80)THEN 2080
   : REM .Adj.AP' index
   : STR(Z9$(Z6),2,1)=HEX(40)
   : DATA SAVE BA T#2,(Z3,Z9)Z9$()
2080 GOSUB 180
   : GOTO 2040
2090 GOSUB '60("Disk File Copy Complete, Please Press Cancel/Edit",23,0,80)
2100 KEYIN K$
   : ON POS(HEX(50F0)=K$)+1GOTO 2100
   : GOSUB '60(" ",18,0,60)
   : GOSUB '60(" ",23,0,80)
   : GOTO 70
2120 IF D0<>1THEN 2410
   : MOVE T#1,N$TO T#2,
   : ERRORX9=ERR
   : GOTO 2170
2130 IF X0=1THEN RETURN
2140 LIMITS T#2,N$,A,B,C,D
   : ERRORX9=ERR
   : GOTO 2170
2150 VERIFY T#2,(A,B)E1
   : ERRORX9=ERR
   : GOTO 2170
2160 IF E1=0THEN RETURN
   : GOTO 2320
2170 REM .Interrograte error on initial attempt to move file
   : ON X9-80GOTO 2240,2210,2180
   : REM .81=Already catalogued   82=not on source  83=no room on platter
   : GOTO 2300
2180 REM already catalogued
   : SCRATCH T#2,N$
   : ERRORX9=ERR
   : GOTO 2300
2190 PRINT AT(18,0,10);"Replacing"
   : MOVE T#1,N$TO T#2,()
   : ERRORX9=ERR
   : IF X9=81THEN 2270
   : IF X9=82THEN 2210
   : GOTO 2300
2200 GOTO 2130
2210 REM not at origin
   : PRINT HEX(07);
   : GOSUB '60("File not found on origin platter",22,0,80)
   : GOTO 2245
2240 REM no room on destination platter
   : PRINT HEX(07);
   : GOSUB '60("No room on destination platter",22,0,80)
2245 GOSUB '60("Load new disk and press RUN or Cancel/Edit to Abort",23,0,80)
2250 KEYIN K$
   : ON POS(HEX(8250F0)=K$)+1GOTO 2250,2260
   : GOTO 2340
2260 GOSUB '60(" ",22,0,80*2)
   : GOTO 2120
2270 REM insufficient room in old file space
   : SAVE T#2,(N$)Z1$0,0
   : ERRORX9=ERR
   : IF X9<>83THEN 2300
   : CONVERT STR(Z1$,5)TO E1
   : CONVERT E1+1TO STR(Z1$,5),(####)
   : IF E1>9999THEN 2300
   : GOTO 2270
2280 SCRATCH T#2,Z1$
   : ERRORX9=ERR
   : GOTO 2300
2290 GOTO 2120
2300 N=N-1
   : RETURN CLEAR
   : PRINT HEX(07);
   : GOSUB '60("DISK ERROR -",22,0,80)
   : Z0$=ERR$(X9)
   : PRINT HEX(0E);X9;Z0$;HEX(0F);
   : GOSUB '60("RUN - Retry          CANCEL - Exit",23,0,80)
2310 KEYIN K$
   : ON POS(HEX(8250F0)=K$)+1GOTO 2310,2050
   : PRINT AT(18,0,6*80)
   : GOTO 70
2320 RETURN CLEAR
   : PRINT HEX(07);
   : GOSUB '60("MOVE FILE ABORTED, PLEASE CANCEL - VERIFY ERROR SECTOR",23,0,8
     0)
   : PRINT HEX(0E);E1;HEX(0F);
2330 KEYIN K$
   : ON POS(HEX(50F0)=K$)+1GOTO 2310
2340 GOSUB '60(" ",18,0,80)
   : GOSUB '60(" ",22,0,2*80)
   : GOTO 70
2400 REM %^.Img to Disk (file by file)
   : REM .MOVE T #1, TO T#2
2410 REM .#1 N$ LIMITS in A1,B1,C1,D1
   : REM %0 C  #1 sectors
   : C=B1-A1+1
2420 LIMITS T#2,N$,A,B,D,D
   : ERRORX9=ERR
   : GOTO 2300
2430 IF D<>0THEN 2460
2440 REM .None on destination -- Make one
   : DATA SAVE DC OPEN T#2,(C)N$
   : ERRORX9=ERR
   : GOTO 2170
2450 GOTO 2420
2460 REM .Is there room enuf?
   : IF C>B-A+1THEN 2270
   : REM /.no
2480 REM %.Move file
   : PRINT AT(18,0,10);"Replacing"
   : COPY T#1,(A1,A1+C)TO T#2,(A)
2490 REM .Make index item
   : K$=HEX(00)
   : IF D1=1THEN K$=HEX(80)
   : IF D1=3THEN K$=HEX(40)
   : I$=HEX(10)&K$&BIN(A,2)&BIN(A+C-1,2)&HEX(0000)&N$
2500 GOSUB '229(2,N$)
   : Z9$(Z6)=I$
   : DATA SAVE BA T#2,(Z3,Z9)Z9$()
   : D1=0
   : RETURN
3000 REM %^.@TO.SUBS 04/09/90 @TO.DISK & @TOIMAGE overlay
3005 REM %.'60 Display Highlighted
3010 DEFFN'60(Z0$,R,C,E1)
   : REM Prints a message highlighted
   : PRINT HEX(020402000E06);AT(R,C,E1);STR(Z0$,,LEN(Z0$));HEX(0F);
   : RETURN
3020 REM %.'154 Get LIMITS of file N$
3030 DEFFN'154(N$)
   : ON D0GOTO 3040,3040,3070,3070
   : STOP "D0 must be 1-4 "#
3040 GOSUB '229(1,N$)
   : IF Z6=0THEN 3075
   : A$=Z9$(Z6)
   : A1=VAL(STR(A$,3),2)
   : B1=VAL(STR(A$,5),2)
   : D1=POS(HEX(800040)=STR(A$,2))
3050 IF D1<>1THEN RETURN
   : DATA LOAD BA T#1,(A1,Z)D$()
   : K$=STR(D$(),,1)AND HEX(F0)
   : IF K$=HEX(60)OR K$=HEX(70)THEN D1=3
   : RETURN
3060 REM .Get from Disk.image
3070 FOR X=S8TO (S8+E9-1)
   : Z=9
   : IF X=S8THEN Z=25
   : DATA LOAD BA T#1,(X,X9)D$()
   : MAT SEARCHSTR(D$(),Z),=STR(N$,,8)TO M$STEP 16
   : IF M$>HEX(0000)THEN 3080
   : NEXT X
3075 Z0$=N$&" not found"
   : GOSUB '60(Z0$,23,0,80)
   : RETURN
3080 Z0$=STR(D$(),VAL(M$,2)+Z-9,16)
   : A1=VAL(STR(Z0$,3),2)+S8
   : B1=VAL(STR(Z0$,5),2)+S8
   : D1=POS(HEX(1011)=STR(Z0$,,1))
   : IF D1>0THEN D1=POS(HEX(800040)=STR(Z0$,2))
   : IF STR(Z0$,,1)=HEX(11)THEN D1=-D1
   : X=S8+E9
   : NEXT X
   : RETURN
3130 REM %.'155 Get a file name
3140 DEFFN'155
   : X1=X1+1
   : IF X1>FTHEN N1$=" "
   : ELSE N1$=N$(X1)
   : N$=N1$
   : IF N$=" "THEN X1=0
   : RETURN
3800 REM %^ -- SE.SUBS, RELEASE 6.03, (05/10/82) SCREEN SUBROUTINES --
3801 DIM T1(8),S1$,S4$80,T1$1,T2$80,T3$1,T$(10)1,T4$3,S2$124
3802 REM %ACCEPT REPEATING FIELD
3803 DEFFN'136(T1(1),T1(2),T1(3),T1(4),T1(5),T1(6),T1(7),T1(8),T1$(),S0$,S2$,T
     2,T9,T$(),S9)
   : I=20
   : GOSUB 3863
   : T2,T5=MIN(MAX(1,T2),T1(6))
   : $TRAN(T$(),HEX(202E))R
   : T$(5)="5"
   : R1=1
3804 IF S9>1THEN 3810
3805 IF T9<0THEN 3806
   : T$(5)="5"
   : T3$=S2$
   : GOSUB 3831
   : S2$=T3$
   : IF T9=0THEN 3808
   : T2=T5
3806 GOSUB 3835
   : GOSUB '130(T0,T1,T1(3),S2$,T1$(T2),S0$," ",T$(),T0$)
   : T1$(T2)=S4$
   : IF R1<5OR R1=11OR R1=14THEN 3808
3807 IF R1=5THEN T2=T2+1
   : IF R1=6THEN T2=T2-1
   : IF T2>=1AND T2<=T1(6)THEN 3806
3808 RETURN
3809 REM %^PICKTYPE (S9 =2/P1; =3/PM)
3810 SELECT PRINT 205(80)
   : PRINT HEX(0202020F);
   : $TRAN(S2$,HEX(8520))R
   : IF T9<0THEN 3814
   : T5=T2
   : FOR T2=1TO T1(6)
   : IF S9=2THEN 3811
   : T4$=STR(S2$,T2,1)&HEX(0F09)
   : GOTO 3812
3811 IF T2=T5THEN T4$=HEX(8B0E09)
   : ELSE T4$=HEX(900F09)
3812 GOSUB 3835
   : GOSUB 3824
3813 NEXT T2
   : T2=T5
   : IF T9=0THEN 3825
3814 IF S9=3THEN S0$=S0$&"DI"
   : GOSUB 3835
   : PRINT HEX(06);AT(T0-1,T1-1);
   : T9=1
   : GOSUB 3840
   : IF S9=2AND R1<11OR R1<7THEN 3825
   : IF S9=2THEN 3818
   : ON R1-8GOTO 3815,3816
   : GOTO 3819
3815 STR(S2$,T2,1)=HEX(85)
   : GOTO 3817
3816 STR(S2$,T2,1)=HEX(8B)
3817 T4$=STR(S2$,T2,1)&HEX(0F09)
   : GOSUB 3824
   : I=1
   : GOTO 3822
3818 T4$=HEX(900F09)
   : GOSUB 3824
3819 ON POS(HEX(2008)=T1$)GOTO 3820,3821
   : GOSUB 3826
   : GOTO 3823
3820 I=1
   : GOTO 3822
3821 I=-1
3822 T2=T2+I
   : T2=MOD(T2,T1(6))
   : IF T2=0THEN T2=T1(6)
   : IF T1$(T2)=" "THEN 3822
3823 IF S9=3THEN T4$=STR(S2$,T2,1)&HEX(0F09)
   : ELSE T4$=HEX(8B0E09)
   : GOSUB 3835
   : GOSUB 3824
   : GOTO 3814
3824 PRINT HEX(06);AT(T0-1,T1-1);
   : IF T1$(T2)>" "THEN PRINT HEX(0E);T4$;STR(T1$(T2));
   : ELSE PRINT TAB(T1-1+2);STR(T1$(T2));
   : RETURN
3825 $TRAN(S2$,HEX(2085))R
   : T0=T2
   : PRINT HEX(0F0202000F);
   : IF S2=2THEN RETURN
   : MAT REDIM T1$(T1(6))1
   : T1$()=S2$
   : SELECT PRINT 005(80)
   : RETURN
3826 T1$=OR HEX(20)
   : S=-1
   : IF T2=T1(6)THEN 3827
   : FOR I=T2+1TO T1(6)
   : T3$=STR(T1$(I),1,1)OR HEX(20)
   : IF T3$<>T1$THEN NEXT I
   : ELSE S=I
3827 IF T2=1OR S>0THEN 3828
   : FOR I=1TO T2-1
   : T3$=STR(T1$(I),1,1)OR HEX(20)
   : IF T3$<>T1$THEN NEXT I
   : ELSE S=I
3828 IF S>-1THEN T2=S
   : RETURN
3829 REM %^DISPLAY REPEATING FIELD
3830 DEFFN'137(T1(1),T1(2),T1(3),T1(4),T1(5),T1(6),T1(7),T1(8),T1$(),T$())
   : MAT REDIM T1$(T1(6))T1(3)
   : $TRAN(T$(),HEX(202E))R
3831 SELECT PRINT 405(80)
   : IF T$(7)=" "THEN PRINT HEX(020402000E06);
   : ELSE PRINT HEX(0F06)
   : FOR T2=1TO T1(6)
   : GOSUB 3835
   : S2$=T1$(T2)
   : IF T$(3)=" "OR S2$=" "THEN 3832
   : STR(S2$,,LEN(S2$))=ALL(8B)
3832 IF T$(5)>" "THEN $TRAN(S2$,HEX(8520))R
   : PRINT AT(T0-1,T1-1);STR(S2$,,T1(3));
   : NEXT T2
3833 SELECT PRINT 005(80)
   : RETURN
3834 REM %^GLOBAL ROUTINES
3835 IF T$(4)>" "THEN T0=INT((T2-1)/T1(8))*T1(7)+T1(1)
   : ELSE T0=MOD((T2-1),T1(4))*T1(7)+T1(1)
   : IF T$(4)>" "THEN T1=MOD((T2-1),T1(8))*T1(5)+T1(2)
   : ELSE T1=INT((T2-1)/T1(4))*T1(5)+T1(2)
   : RETURN
3837 IF T0$<>" "THEN GOSUB 3859
   : IF T>0THEN GOSUB 3861
   : RETURN
3838 REM %keystroke eval
3839 T=1
   : PRINT HEX(06070E);AT(23,0,40);" Invalid key ignored";AT(T0-1,T1-2+T9);
3840 R1=99
   : IF T$(9)=" "THEN PRINT HEX(02050F);
   : KEYIN T1$,,3844
   : IF T1$>HEX(82)THEN 3840
   : IF T$(9)>" "THEN IF POS(S0$=T1$)=0OR T1$=" "THEN 3839
   : GOSUB 3837
   : ON POS(HEX(81820D)=T1$)GOTO 3841,3842,3843
   : RETURN
3841 R1=0
   : RETURN
3842 R1=1
   : RETURN
3843 R1=5
   : RETURN
3844 GOSUB 3837
   : IF T1$>HEX(1F)THEN 3845
   : IF POS(S0$=T1$)=0THEN 3845
   : R1=4
   : S0=VAL(T1$)
   : RETURN
3845 ON POS(HEX(F01F507E7F)=T1$)GOTO 3846,3846,3847,3848,3849
   : GOTO 3850
3846 R1=0
   : RETURN
3847 R1=-1
   : RETURN
3848 R1=5
   : RETURN
3849 R1=6
   : RETURN
3850 T1$=AND HEX(0F)
   : IF POS(HEX(0203050608090A0C0D)=T1$)>0THEN 3851
   : GOTO 3839
3851 $TRAN(T1$,HEX(0B060E05))R
   : R1=VAL(T1$)
   : T2$="1PN4567EDIuewd56"
   : IF POS(S0$=STR(T2$,R1,1))>0THEN RETURN
   : GOTO 3839
3852 ON POS(HEX(2008)=T1$)GOTO 3853,3854
   : GOTO 3855
3853 IF T$(4)>" "THEN R1=12
   : ELSE R1=14
   : GOTO 3855
3854 IF T$(4)>" "THEN R1=13
   : ELSE R1=11
3855 I=T1(6)
   : IF T$(4)=" "THEN 3856
   : IF R1=14THEN T2=MOD(T2+T1(8),I)
   : IF R1=11THEN T2=MOD(T2-T1(8),I)
   : GOTO 3857
3856 IF R1=14THEN T2=MOD(T2+1,I)
   : IF R1=11THEN T2=MOD(T2-1,I)
3857 IF T2=0THEN T2=T1(6)
   : IF T2>T1(6)THEN 3852
   : RETURN
3858 %erase window
3859 FOR I=1TO VAL(STR(T0$,3))
   : PRINT HEX(06);AT(VAL(STR(T0$,1))-2+I,VAL(STR(T0$,2)),VAL(STR(T0$,4)));
   : NEXT I
   : T0$=" "
3860 %erase errmsg
3861 PRINT HEX(06);AT(23,0,79);
   : T=0
   : GOSUB 3898
   : RETURN
3862 REM %set disp attr
3863 S1$=HEX(0204)&BIN(I/10)&BIN(MOD(I,10))&HEX(0E)
   : PRINT STR(S1$,,5);
   : RETURN
3864 REM %.DISPLAY MSG
3865 DEFFN'128(S2$,T0,T1,I)
   : SELECT PRINT 005(80)
   : IF T0=99THEN PRINT HEX(07);
   : IF T1=99THEN T1=40-(LEN(S2$)/2)
   : T0=MIN(24,T0)
   : T1=MAX(1,T1)
   : GOSUB 3863
   : I=1
   : STR(S2$,LEN(S2$)+1,1)=HEX(AF)
   : T=POS(S2$=HEX(AF))
3866 PRINT HEX(06);AT(T0-1,T1-1);STR(S2$,I,T-1);
   : I=I+T
   : T=POS(STR(S2$,I)=HEX(AF))
   : T0=T0+1
   : IF T>0THEN 3866
   : PRINT HEX(020402000F06);
   : RETURN
3867 REM %^DISPLAY SCR TEXT
3868 DEFFN'129
   : SELECT PRINT 205(80)
3869 READ T0,T1,I,S4$
   : ERRORR1=-2
   : RETURN
3870 IF T0=0THEN RETURN
   : IF I=99THEN 3871
   : IF I=0THEN PRINT HEX(0F);
   : ELSE GOSUB 3863
   : PRINT HEX(06);AT(T0-1,T1-1);STR(S4$,,LEN(S4$));
   : GOTO 3869
3871 PRINT HEX(06);AT(T0-1,T1-1);BOX(VAL(S4$),VAL(STR(S4$,2)))
   : GOTO 3869
3872 REM %^TEXT ENTRY
3873 DEFFN'130(T0,T1,T5,S2$,S4$,S0$,T2$,T$(),T0$)
   : SELECT PRINT 405(80)
   : PRINT HEX(0202000F020402000E);
   : $TRAN(T$(),HEX(202E))R
   : IF T2$>" "THEN PRINT HEX(060F);AT(T0-1,T1-2-LEN(T2$));T2$;HEX(0E);
   : S2$=ALL(S2$)
   : T6=POS("H#X"=S2$)
   : PRINT HEX(0202020F);
3874 IF T$(3)>" "AND S4$>" "THEN T9=LEN(S4$)+1
   : ELSE T9=1
   : IF T$(9)=" "THEN GOSUB 3897
   : IF S0$<>" "THEN S0$=S0$&"IDEew"
   : ELSE S0$="IDEew"
3875 GOSUB 3840
   : IF T$(9)>" "THEN 3906
   : IF R1<7THEN 3900
   : IF R1=11AND POS(S0$="U")>0THEN 3900
   : IF R1=14AND POS(S0$="D")>0THEN 3900
   : IF R1<99AND T$(3)>" "THEN 3893
   : ON R1-7GOTO 3879,3884,3881,3875,3886,3890,3875
   : IF T1$=HEX(08)THEN 3890
   : IF T9<=T5THEN 3877
   : PRINT HEX(07);
   : GOTO 3875
3876 REM %char
3877 STR(S4$,T9,1)=T1$
   : $TRAN(T1$,HEX(8020))R
   : IF T$(3)=" "THEN PRINT HEX(0E);T1$;
   : ELSE PRINT HEX(0E8B);
   : GOTO 3887
3878 REM %erase
3879 IF T5<T9THEN 3875
   : STR(S4$,T9)=" "
   : GOSUB 3897
   : GOTO 3875
3880 REM %insrt
3881 IF T5<T9THEN 3875
   : MAT COPY -S4$<T9,T5-T9>TO -S4$<T9+1,T5-T9>
   : STR(S4$,T9,1)=" "
   : GOSUB 3897
   : GOTO 3875
3882 REM %del
3884 IF T5<T9THEN 3875
   : MAT COPY S4$<T9+1,T5-T9>TO S4$<T9,T5-T9>
   : STR(S4$,T5,1)=" "
   : GOSUB 3897
   : GOTO 3875
3885 REM %incrm
3886 IF T9<T5+1THEN PRINT HEX(09);
3887 IF T9<>T5THEN 3888
   : IF T$(1)=" "THEN 3888
   : R1=5
   : GOTO 3900
3888 T9=MIN(T5+1,T9+1)
   : GOTO 3875
3889 REM %decrm
3890 IF T9>1THEN 3891
   : IF T$(2)=" "THEN 3875
   : R1=6
   : GOTO 3900
3891 PRINT HEX(08);
   : T9=T9-1
   : IF T1$<>HEX(08)THEN 3875
   : STR(S4$,T9,1)=" "
   : PRINT HEX(8508);
   : GOTO 3875
3892 PRINT HEX(06070E);AT(23,0,50);T2$;
   : T=1
   : GOSUB 3898
   : GOTO 3875
3893 T2$=" Invalid key ignored"
   : GOTO 3892
3894 T2$=" Information required, please enter"
   : GOTO 3892
3895 T2$=" Invalid characters in field"
   : GOTO 3892
3896 REM %print field
3897 PRINT HEX(06);AT(T0-1,T1-1);
   : T2$=S4$
   : IF T$(3)>" "AND T2$>" "THEN STR(T2$,,LEN(T2$))=ALL(8B)
   : $TRAN(T2$,HEX(8520))R
   : PRINT STR(T2$,,T5);
3898 PRINT HEX(06);AT(T0-1,T1-2+T9);
   : RETURN
3900 IF T$(7)=" "OR T$(3)>" "THEN 3901
   : PRINT HEX(0F);
   : GOSUB 3897
3901 $TRAN(S4$,HEX(20802085))R
   : IF R1<1THEN 3903
   : IF S4$=" "AND T$(6)>" "THEN 3894
3902 REM %validation
3903 ON T6GOTO 3905,3904,3906
   : GOTO 3905
3904 IF NUM(S4$)<T1(3)THEN 3895
   : GOTO 3906
3905 IF S4$=" "THEN 3906
   : I=LEN(S4$)
   : IF VER(STR(S4$,,I),S2$)<ITHEN GOTO 3895
3906 SELECT PRINT 005(80)
   : PRINT HEX(0F0202000F);
   : RETURN
5000 DEFFN'50(S9$,S0$)
   : REM Display and Accept ISNy0701 (VER 6.03)
5001 S4=1
   : S3=3
   : S2=0
   : S1=0
   : T0$=" "
5002 IF POS(S9$=F2)>0THEN T0$=STR(S9$,POS(S9$=F2)+1,4)
5003 RESTORE LINE5028
   : GOSUB '129
5004 T9=0
   : FOR T4=1TO 3
5005 ON T4GOSUB 5012,5017,5022
5006 NEXT T4
5007 T9=-1
   : IF POS(S9$=F9)>0THEN T3=VAL(STR(S9$,POS(S9$=F9)+1))
   : ELSE T3=S4
5008 ON T3GOSUB 5012,5017,5022
5009 ON R1GOTO ,,,,5010,5011
   : RETURN
5010 T3=MOD(T3+1,S3+1)
   : IF T3=0THEN T3=S4
   : GOTO 5008
5011 T3=MOD(T3-1,S3+1)
   : IF T3<S4THEN GOTO 5011
   : GOTO 5008
5012 MAT REDIM T1$(2)15
   : RESTORE LINE5012
   : FOR I=1TO 2
   : READ T1$(I)
   : NEXT I
   : GOSUB '136(7,9,1,2,1,2,1,1,T1$(),S0$," ",X0,T9," ",2)
   : X0=T0
   : RETURN
5013 DATA "Copy Only","Copy and Verify"
5017 IF D0>2THEN 5018
   : MAT REDIM T1$(1)3
   : GOSUB '136(11,32,3,1,4,1,1,1,X0$(1),S0$,"H",1,T9,"1",1)
   : X0$(1)=T1$()
   : RETURN
5018 X0$(1)=D$
   : PRINT AT(10,31);D$
   : RETURN
5022 MAT REDIM T1$(1)3
   : GOSUB '136(12,32,3,1,4,1,1,1,X0$(2),S0$,"H",1,T9," ",1)
   : X0$(2)=T1$()
   : RETURN
5028 DATA 5,2,0,"Select Mode:"
5029 DATA 11,2,0,"Origin platter address:"
5030 DATA 12,2,0,"Destination platter address:"
5032 DATA 21,60,0,"   RUN - Accept?"
5033 DATA 22,60,0,"RETURN - Proceed"
5034 DATA 23,60,0,"CANCEL - Exit"
5036 DATA 22,1,0,"(c) Copyright Wang Laboratories, Inc. 1988"
5037 DATA 23,5,0,"All rights reserved"
5100 DATA 0,0,0," "
5200 REM %.Validate disk addr
5210 DEFFN'100(S$)
   : IF S$="340"THEN 5230
   : $TRAN(S$,"AaBbCcDdEeFf")R
   : IF POS("DB3"=S$)>0AND POS("123567"=STR(S$,2))>0AND VER(STR(S$,3),"H")>0TH
     EN 5220
   : Q$="I"
   : RETURN
5220 IF POS("3B"=S$)=0OR POS("123"=STR(S$,2))=0OR STR(S$,3)<>"0"THEN 5230
   : IF STR(S$,,1)="3"THEN STR(S$,3)="1"
   : STR(S$,,1)="D"
5230 Q$=" "
   : RETURN
6490 REM %.Find index item
6500 DEFFN'229(Z9,STR(A$,1,8))
   : DATA LOAD BA T#Z9,(0,Z3)Z9$()
   : Z4=VAL(STR(Z9$(),2,1))
   : STR(A$,9,8)=STR(A$,,8)
   : ON POS(HEX(0001)=STR(Z9$(),,1))GOSUB 6770,6800
   : Z5=Z3
   : IF Z3=0THEN 6630
6620 DATA LOAD BA T#Z9,(Z3,Z8)Z9$()
6630 Z6=0
   : FOR Z7=1TO 16
   : IF Z3<>0THEN 6680
   : IF Z7=1THEN Z7=2
6680 B$=STR(Z9$(Z7),,2)
   : ON POS(HEX(001011)=B$)GOTO 6740,6720,6720
   : GOTO 6750
6720 IF STR(Z9$(Z7),9,8)<>STR(A$,,8)THEN 6750
   : Z6=Z7
6740 Z7=16
6750 NEXT Z7
   : IF B$=HEX(00)THEN RETURN
   : IF Z6<>0THEN RETURN
   : B$=HEX(00)
   : IF V9<>0THEN 6760
   : Z3=Z3-1
   : IF Z3=Z5THEN RETURN
   : IF Z3<0THEN Z3=Z4-1
   : GOTO 6620
6760 Z3=MOD(Z3+1,Z4)
   : IF Z3<>Z5THEN 6620
   : RETURN
6770 XOR (STR(A$,10,7),STR(A$,9,8))
   : B$=STR(A$,16,1)
   : STR(A$,18,2)=HEX(0000)
   : ADDC(STR(A$,18,2),B$)
   : ADDC(STR(A$,18,2),B$)
   : ADDC(STR(A$,18,2),B$)
   : ADD(STR(A$,18,1),STR(A$,19,1))
   : Z3=VAL(STR(A$,18,2))
   : Z3=Z3-INT(Z3/Z4)*Z4
   : RETURN
6800 STR(A$,18,1)=HEX(00)
   : FOR Z5=9TO 16
   : IF MOD(Z5,2)>0THEN ROTATE(STR(A$,Z5,1),4)
   : STR(A$,18,1)=STR(A$,18,1)ADDSTR(A$,Z5,1)
   : NEXT Z5
   : Z3=MOD(VAL(STR(A$,18,1)),Z4)
   : RETURN