Listing of file='ISS.041U' on disk='vmedia/701-2423D.wvd.zip'
# Sector 399, program filename = 'ISS.041U'
0010 REM ISS.041U, RELEASE 5-1, (11/07/79) - COPYRIGHT WANG LABS. INC.
0068 DIM Z5$60,Z6$4,E$64
: DIM N1$8,N2$8
: DIM M$(8)1,I$(256)1,R9$(16)16,P$10,O$(256)1,W$(252)1,G$8,H$2,H1$64
0120 % THIS MUST BE STATEMENT 120
0270 S1$="ISS.254SISS.226SISS.227SISS.229SISS.217S"
: LOAD DC T#0,<LEN(S1$)/8>S1$10,0BEG 290
0290 IF S$(1)<>" "THEN SELECT #4<S$(1)>
: IF F9$=" "THEN 350
0310 PRINT AT(1,0,S0);"MOUNT PLATTERS AT INDICATED ADDRESSES"
: GOSUB '254
: DATA LOAD BA T#1,(0)I$()
: ERRORGOTO 310
0340 DATA LOAD BA T#2,(0)I$()
: ERRORGOTO 310
0350 D=0
0370 GOSUB '91
: IF N1$=HEX(0000000000000000)THEN GOSUB '31
: D=D+1
: PRINT AT(0,0);"DECOMPRESSING FILE #";D
: PRINT "INPUT - ";N1$;" OUTPUT - ";N2$;TAB(64)
: LIMITS T#1,N1$,A1,A2,A3,A4
: IF A4<>1THEN 2820
: DATA LOAD BA T#1,(A1)I$()
: AND (I$(1),F0)
: IF I$(1)<>HEX(50)THEN 550
: E$="FILE "&N1$&" IS PROTECTED"
: GOSUB '92(E$)
: GOTO 370
0550 E1=3*A3
: DATA SAVE DC OPEN T#2,(E1)N2$
: ERRORGOTO 2820
0580 LIMITS T#2,N2$,B1,B2,B3
: DATA LOAD BA T#1,(A1)O$()
: STR(O$(),2,8)=N2$
: DATA SAVE BA T#2,(B1)O$()
: GOSUB 890
: DATA LOAD DC OPEN T#2,N2$
: DSKIP #2,ES
: DATA SAVE DC #2,END
: $OPEN #2
: IF N<1THEN N=1
: GOSUB '227(2,N2$,N-1)
: LIMITS T#2,N2$,B1,B2,B3
: DATA LOAD BA T#2,(B2)O$()
: O$(1)=HEX(20)
: STR(O$(),2,2)=SUBCHEX(0001)
: DATA SAVE BA T#2,(B2)O$()
: GOSUB '229(2,N2$)
: STR(R9$(R6),2,1)=HEX(80)
0820 DATA SAVE BA T#2,(R3)R9$()
: $CLOSE#2
: GOTO 370
0890 I=A1+1
: G=B1+1
: O9=0
: I9=4
: E=1
: L1=0
: GOSUB 1230
1000 UNPACK(####)STR(I$(),3,2)TO L
: P=POS(I$()=HEX(0D))+1
: IF P=1THEN 1170
: W$()=STR(I$(),5,P-5)
: I$()=STR(I$(),P+1)
: IF STR(I$(),1,2)<>HEX(00FF)THEN GOSUB 1230
: IF L1<10000THEN UNPACK(####)STR(I$(),3,2)TO L1
: GOSUB 2090
: IF L1<10000THEN 1000
1170 GOSUB 2620
: RETURN
1230 IF I>A1+A3-2THEN 2030
: DATA LOAD BA T#1,(I,I)I$()
: P$=HEX(FC22FD27FE3A2020)
: IF I-1<A1+A3-2THEN STR(I$(),POS(I$()=HEX(FD)))=" "
: ELSE STR(I$(),POS(I$()=HEX(FE)))=" "
: I$(1)=HEX(00)
: P=0
1340 P1=POS(STR(I$(),P+1)=HEX(FF))
: IF P1=0THEN 1400
: P=P+P1
: $TRAN(STR(I$(),P+1,2),P$)R
: GOTO 1340
1400 P=0
1410 P1=POS(STR(I$(),P+1)=HEX(D8))
: IF P1=0THEN 1490
: P=P+P1
: P1=POS(STR(I$(),P+1)=HEX(0D))
: $TRAN(STR(I$(),P,P1),P$)R
: P=P+1
: GOTO 1410
1490 P=0
1500 P1=POS(STR(I$(),P+1)=HEX(A2))
: IF P1=0THEN 1610
: P=P+P1
: P1=POS(-STR(I$(),1,P)=":")
: IF P1=0OR P1+POS(STR(I$(),P1+1)<>" ")<>PTHEN P1=P
: P2=POS(STR(I$(),P1+1)=HEX(0D))
: P3=POS(STR(I$(),P1+1)=HEX(3A))
: IF P2*P3=0THEN P4=MAX(P2,P3)
: ELSE P4=MIN(P2,P3)
: $TRAN(STR(I$(),P1,P4),P$)R
: GOTO 1500
1610 P=0
1620 P1=POS(STR(I$(),P+1)=HEX(27))
: IF P1=0THEN 1700
: P=P+P1
: P2=POS(-STR(I$(),1,P-1)<>" ")
: IF STR(I$(),P2,1)=HEX(CE)OR STR(I$(),P2,1)=HEX(9A)OR STR(I$(),P2,1)=HEX(8
0)THEN $TRAN(STR(I$(),P,1),P$)R
: GOTO 1620
1700 P=0
1710 P2=POS(STR(I$(),P+1)=HEX(27))
: P3=POS(STR(I$(),P+1)=HEX(22))
: IF P2*P3=0THEN P1=MAX(P2,P3)
: ELSE P1=MIN(P2,P3)
: IF P1=0THEN 1810
: P=P+P1
: P1=POS(STR(I$(),P+1)=I$(P))
: $TRAN(STR(I$(),P,P1),P$)R
: P=P+P1
: GOTO 1710
1810 P=0
1820 P1=POS(STR(I$(),P+1)=HEX(F2))
: IF P1=0THEN 1880
: P=P+P1
: $TRAN(I$(POS(-STR(I$(),1,P)=":")),HEX(FE3A2020))R
: GOTO 1820
1880 P=0
1890 P1=POS(STR(I$(),P+1)=HEX(EB))
: IF P1=0THEN 1980
: P=P+P1
: P1=POS(-STR(I$(),1,P)=":")
: IF P1=0THEN 1890
: P2=POS(STR(I$(),P1+1)=HEX(0D))
: $TRAN(STR(I$(),P1,P2),HEX(FE3A2020))R
: GOTO 1890
1980 $TRAN(I$(),HEX(22FC27FD2020))R
: RETURN
2030 L1=10000
: RETURN
2090 W$()=STR(W$(),POS(W$()<>" "))
2110 IF L=L1-1THEN 2260
: P2=POS(W$()=HEX(3A))
: P3=POS(W$()=HEX(0D))
: IF P2*P3=0THEN P1=MAX(P2,P3)
: ELSE P1=MIN(P2,P3)
: GOSUB 2350
: W$()=STR(W$(),P1+1)
: IF W$()=" "THEN RETURN
: L=L+1
: GOTO 2110
2260 IF POS(W$()=":")<>0THEN GOSUB 2710
: P1=POS(W$()=HEX(0D))
: GOSUB 2350
: RETURN
2350 $TRAN(STR(W$(),1,P1),HEX(3AFE2020))R
: IF W$(1)=HEX(9D)THEN I9=I9-2
: IF I9<4THEN I9=4
: IF W$(1)=HEX(A2)THEN I8=0
: ELSE I8=I9
: IF O9+P1+I8+7<257THEN 2520
: STR(O$(),O9+1)=HEX(00FD)
: DATA SAVE BA T#2,(G,G)O$()
: E=E+1
: IF E>E1-3THEN 2760
: O$()=" "
: O9=0
2520 PACK(####)STR(H1$,1,2)FROML
: STR(O$(),O9+1)=HEX(00FF)&STR(H1$,1,I8+2)&STR(W$(),1,P1-1)&HEX(0D00)
: O9=O9+P1+I8+5
: IF W$(1)=HEX(9E)THEN I9=I9+2
: RETURN
2620 STR(O$(),O9+1)=HEX(00FE)
: O$(1)=HEX(20)
: DATA SAVE BA T#2,(G,G)O$()
: E=E+1
: RETURN
2710 CONVERT LTO Z6$,(####)
: Z5$=STR(N1$,1)&" - LINE "&Z6$&" NOT FULLY DECOMPRESSED"
: GOSUB '92(Z5$)
: RETURN
2760 Z5$=STR(N1$,1)&" CANNOT BE DECOMPRESSED - FILE LENGTH ERROR"
: GOSUB '92(Z5$)
: RETURN CLEAR ALL
2790 GOSUB '99(N2$,2)
: GOTO 370
2820 Z5$=STR(N1$,1)&" CANNOT BE DECOMPRESSED - ERROR IN OPEN"
: GOSUB '92(Z5$)
: GOTO 370
2880 DEFFN'91
: IF Z9$="INDIRECT"THEN 3190
: IF Z9$="PART"THEN 3080
: IF Z9=0THEN N1$=ALL(HEX(00))
: IF Z9=0THEN Z9=1
: N=VAL(Z3$(1))-1
2980 GOSUB '226(1,N1$)
: N1$,N2$=R9$
: IF N1$=HEX(0000000000000000)THEN RETURN
: IF R<>1THEN 2980
: IF N1$<Z1$(1)THEN 2980
: IF N1$>Z2$(1)THEN 2980
: RETURN
3080 Z8=Z8+1
: IF Z8>Z9THEN 3160
: N1$=Z1$(Z8)
: N2$=Z2$(Z8)
: N=VAL(Z3$(Z8))-1
: RETURN
3160 N1$=ALL(HEX(00))
: RETURN
3190 MAT REDIM Z1$(14)8,Z2$(14)8,Z3$(14)1
: IF Z9=0THEN Z8=0
3220 IF Z9=0THEN GOSUB '217(Z8$,3,S2,-2,2,"ISS 4.0 REF"," ",0)
: IF Q$<>" "THEN 3410
: IF Z9=0THEN Z9=1
3260 IF Z8=0THEN DATA LOAD DC #3,STR(Z1$(),1),STR(Z2$(),1),STR(Z3$(),1)
: IF END THEN 3370
: Z8=Z8+1
: N1$=Z1$(Z8)
: N2$=Z2$(Z8)
: N=VAL(Z3$(Z8))-1
: IF Z8=14THEN Z8=0
: IF N1$=" "THEN 3260
: RETURN
3370 N1$=ALL(HEX(00))
: GOSUB '219(Z8$,3,S2," ",0)
: RETURN
3410 PRINT AT(1,0);"ERROR IN REFERENCE FILE OPEN = ";Q$
: GOSUB '254
: GOTO 3220
3470 DEFFN'92(Z5$)
: IF S$(1)=" "THEN 3590
: GOSUB '94
: SELECT PRINT <S$(1)>
: IF N3$=" "THEN PRINT HEX(0C0E);"DECOMPRESSION ERRORS"
: IF N3$<>N2$THEN PRINT
: N3$=N2$
: PRINT Z5$
: SELECT PRINT 005
: RETURN
3590 PRINT AT(1,0);Z5$;TAB(S0)
: GOSUB '254
: RETURN
3650 DEFFN'94
3670 $OPEN 3750,#4
: $CLOSE#4
3690 $GIO#4(010A02001212400040004000,A$)
: IF STR(A$,8,1)=HEX(00)THEN RETURN
: PRINT AT(1,0,S0);"SELECT PRINTER"
: GOSUB '254
: GOTO 3690
3750 PRINT AT(1,0,S0);"PRINTER HOGGED"
: GOSUB '254
: GOTO 3670
3810 DEFFN'99(G$,G9)
: LIMITS T#G9,G$,G6,G7,G8
: GOSUB '229(G9,G$)
: $OPEN #G9
: STR(R9$(R6),1,1)=HEX(21)
: DATA SAVE BA T#G9,(R3)R9$()
: DATA LOAD BA T#G9,(0)R9$()
: SELECT PRINT 005
: STR(R9$(),3,1)=AND HEX(7F)
: IF G7+1<>VAL(STR(R9$(),3,2),2)THEN 3950
: STR(R9$(),3,2)=BIN(G6,2)
: DATA SAVE BA T#G9,(0)R9$()
3950 $CLOSE#G9
: RETURN
4000 DEFFN'31
: SELECT PRINT 005
: $CLOSE#4
: PRINT HEX(03)
: IF Z8$<>" "THEN GOSUB '219(Z8$,3,S2," ",0)
: COM CLEAR Z9$
4060 LOAD DC T#0,"ISS.100M"
: ERRORGOTO 4070
4070 PRINT HEX(010A);"MOUNT ISS DISK AT ADDRESS ";S$
: GOSUB '254
: GOTO 4060