Listing of file='IDS2PS04' on disk='vmedia/701-2716B.wvd.zip'
# Sector 653, program filename = 'IDS2PS04'
1000 REM "IDS2PS04" - SCREEN MASK TEXT EDITOR MODULE
1005 IF F6$(17)<"^"THEN SELECT @PART"IDS2SUBM"
: DIM J$(2)16
: F6$(11)="N"
: GOTO 1050
1015 DEFFNZ(P)=R*80+C+153
: DEFFNY(X)=MAX(1,80*Y+X+1)
1020 R,C=0
: GOTO 1050
1040 PRINT HEX(07);
1050 PRINT HEX(06);AT(23,0);
: PRINTUSING " ## ##",R+1,C+1;
: PRINT AT(R,C);HEX(05);
: KEYIN E6$,,1280
: IF R=23AND C<79THEN 1040
: IF R=23AND E6$<>HEX(82)THEN 1040
: IF E6$=HEX(0D)THEN 1170
: IF E6$=HEX(82)THEN 1870
: IF E6$=HEX(08)THEN 1220
: IF F$(R*80+C+1)<>HEX(00)THEN 1040
: IF E6$<HEX(20)OR E6$>HEX(7F)THEN 1040
1130 E$(R*80+C+153)=E6$
: $TRAN(E6$,HEX(80202009))R
: PRINT E6$;
: C=C+1
: IF C<80THEN 1050
1170 IF R=23THEN 1040
: C=0
1180 IF R=23THEN 1040
: R=R+1
: IF R<23THEN 1050
: IF R=23AND C=79THEN 1050
: R=22
: GOTO 1040
1220 IF C=0THEN 1040
: IF F$(R*80+C)<>HEX(00)THEN 1040
: C=C-1
: E$(R*80+C+153)=" "
: PRINT HEX(088008);
: GOTO 1050
1263 IF R=23THEN 1040
: IF POS(STR(F$(),R*80+1,80)>00)>0THEN 1040
: B=C
: C=0
: X=POS(STR(E$(),R*80+C+153,80)>20)-1
: IF X<0THEN 1265
: Y=POS(-STR(E$(),R*80+C+153,80)>20)-X
: IF Y>78THEN 1264
1264 E$=STR(E$(),R*80+C+153+X,Y)
: STR(E$(),R*80+C+153,80)=" "
: STR(E$(),R*80+C+153+INT((80-Y)/2),Y)=E$
: GOSUB '72(R,0)
: C=B
: GOTO 1050
1265 C=B
: GOTO 1040
1280 S=1
: $TRAN(E6$,HEX(0545064609490A4A0C4C0D4D19591A5A))R
: ON VAL(E6$)+1GOTO 1810,,1263,,1300,1180,1340,1020,1380,1420,1450,1490,151
0,1580,1560,1040,1780,,,,,1630,1710,,,1425,1432,,,,,1885
: ON VAL(E6$)-125GOTO 1282,1284
: GOTO 1040
1282 IF R>22THEN 1040
: IF F$(R*80+C+1)>HEX(00)THEN 1040
: E6$=HEX(09)
: GOTO 1130
1284 IF R>22THEN 1040
: STR(E$(),R*80+C+153,80-C)=ALL(09)
: GOTO 1390
1300 R=22
: C=79
: GOTO 1050
1340 IF R=0THEN 1040
: R=R-1
: GOTO 1050
1380 STR(E$(),R*80+C+153,80-C)=" "
1390 GOSUB '72(R,C)
: GOTO 1050
1420 IF C=79THEN 1040
: STR(E$(),R*80+C+153,80-C)=STR(E$(),R*80+C+153+1,79-C)
: GOTO 1390
1425 Y=R
: X=C
: IF F$(MAX(1,80*Y+X+1))<>HEX(00)OR C=79THEN 1040
: STR(F$(),MAX(1,80*Y+X+1),80-X)=STR(F$(),MAX(1,80*Y+X+1)+1,79-X)&HEX(00)
: GOSUB 1682
: GOTO 1420
1432 Y=R
: X=C
: IF F$(MAX(1,80*Y+X))<>HEX(00)AND F$(MAX(1,80*Y+X+1))<>HEX(00)OR F$(R*80+8
0)<>HEX(00)THEN 1040
: MAT COPY -F$()<MAX(1,80*Y+X+1),79-C>TO -F$()<MAX(1,80*Y+X+1)+1,79-C>
: F$(MAX(1,80*Y+X+1))=HEX(00)
: GOSUB 1682
1450 IF R=23THEN 1040
: MAT COPY -E$()<R*80+C+153,79-C>TO -E$()<R*80+C+153+1,79-C>
: E$(R*80+C+153)=" "
: GOTO 1390
1490 C=C+4
1510 C=C+1
: IF C>79THEN PRINT HEX(07);
: C=MIN(C,79)
: GOTO 1050
1560 IF R=23THEN 1040
: C=C-4
1580 IF R=23THEN 1040
: C=C-1
: IF C<0THEN PRINT HEX(07);
: C=MAX(C,0)
: GOTO 1050
1630 A=1
: IF R=22THEN 1040
1635 X,B=C
: Y=R
: IF STR(E$(),R*80+C+153+80*A,80-C)<>" "OR POS(STR(F$(),R*80+C+153+80*A-152
,80-C)>00)>0THEN 1040
: IF F$(MAX(1,80*Y+X+1))<>HEX(00)THEN C,X=POS(STR(F$(),80*R+1)=F$(MAX(1,80*
Y+X+1)))-1
: IF F$(MAX(1,80*Y+X+1)+80*A)=HEX(00)THEN 1640
: C=B
: GOTO 1040
1640 STR(E$(),R*80+C+153+80*A,80-C)=STR(E$(),R*80+C+153)
: STR(F$(),R*80+C+153+80*A-152,80-C)=STR(F$(),R*80+C+1)
: STR(E$(),R*80+C+153,80-C)=ALL(20)
: STR(F$(),R*80+C+1,80-C)=ALL(00)
: GOSUB '72(R,C)
: R=R+A
: GOSUB '72(R,C)
: X=C
: C=B
: GOSUB 1682
: GOTO 1050
1682 IF X>79OR POS(STR(F$(),MAX(1,80*Y+X+1),80-X)>00)=0THEN RETURN
: X=X-1+POS(STR(F$(),MAX(1,80*Y+X+1))>00)
: STR(E2$(VAL(F$(MAX(1,80*Y+X+1)))),4,1)=STR(E2$(VAL(F$(MAX(1,80*Y+X+1)))),
4,1)AND HEX(07)OR BIN(R*8)
: STR(E2$(VAL(F$(MAX(1,80*Y+X+1)))),5,1)=STR(E2$(VAL(F$(MAX(1,80*Y+X+1)))),
5,1)AND HEX(01)OR BIN(X*2)
1688 IF MOD(VAL(STR(E2$(VAL(F$(MAX(1,80*Y+X+1)))),5)),1)=0AND STR(E2$(VAL(F$(M
AX(1,80*Y+X+1)))),7,1)<HEX(40)THEN X=X+1
: ELSE X=X+VAL(E2$(VAL(F$(MAX(1,80*Y+X+1)))))
: GOTO 1682
1710 A=-1
: IF R=0THEN 1040
: GOTO 1635
1780 IF N=249OR R=23THEN 1040
: LOAD DC T#2,"IDS2PS05"1000,
1810 IF R<23THEN IF E$(R*80+C+153)>" "THEN 1040
: MAT REDIM E$(24)83
: DATA SAVE DA T#3,(E4)E$()
: MAT REDIM E$(E8)1
: LOAD T#2,"IDS2PS06"1000,
1820 STOP #
: GOSUB '71
: DATA SAVE DA T#D1,(E3,X)E$()
: DATA SAVE DA T#D1,(X,X)E2$()
: DATA SAVE DA T#D1,(X,X)E3$()
1870 GOSUB 2010
: S=2
1885 PRINT HEX(0202000F);
: STR(F6$(),11,4)="YYYY"
: E9$(7)=" "
: COM CLEAR E3
: IF E6$=HEX(1F)THEN LOAD T#2,R3$(1)1000,
: LOAD T#2,"IDS2PS40"1000,
2000 DEFFN'71
: MAT REDIM E$(24)83,E2$(27)83,E3$(24)83
: RETURN
2010 MAT REDIM E$(E8)1,E2$(249)9,E3$(249)8
: RETURN
2030 DEFFN'72(Y,X)
: E$=STR(E$(),Y*80+X+153,80-X)
: $TRAN(E$,HEX(80202009))R
: PRINT HEX(06);AT(Y,X);STR(E$,1,80-X);AT(Y,X);
2040 IF X>=80THEN RETURN
: IF POS(STR(F$(),MAX(1,80*Y+X+1),80-X)>00)=0THEN RETURN
: E$=ALL(8B)
: X=X-1+POS(STR(F$(),MAX(1,80*Y+X+1))>00)
: J1=VAL(F$(MAX(1,80*Y+X+1)))
: J2=VAL(E2$(J1))
: IF STR(E2$(J1),7,1)<HEX(40)AND MOD(VAL(STR(E2$(J1),5)),2)=0THEN J2=1
: IF STR(E2$(J1),7,1)<HEX(40)AND MOD(VAL(STR(E2$(J1),5)),2)=0THEN E$=HEX(9B
)
: PRINT AT(Y,INT(VAL(STR(E2$(J1),5))*.5));STR(E$,1,J2)
2075 X=INT(VAL(STR(E2$(VAL(F$(MAX(1,80*Y+X+1)))),5))*.5)+J2
: GOTO 2040
3699 ON ERRORE1$,E2$GOTO 3700
3700 DEFFN'31
: E$="IDS2PS04"
: IF E5$<"Y"THEN LOAD T#2,"IDS2PER1"1000,
: STOP "ERROR"