1190 FOR Y=1+2*(Z\32) TO 2+2*(Z\32):FOR X=Z MOD 32 TO 1+Z MOD 32:FOR J=0 TO 7:G=INP(&HD9+2*L):GOSUB 1740:NEXT J:NEXT X:NEXT Y
21
1200 Z=Z+2:GOTO 1160
22
1210 IF K>=&H80 THEN K=K+8*96-&H20
23
1220 OUT &HD9,(K-&H20)\&H40+ZY:OUT &HD8,(K-&H20)MOD&H40+ZZ
24
1230 FOR Y=1+2*(Z\32) TO 2+2*(Z\32):FOR X=Z MOD 32 TO 1+Z MOD 32:FOR J=0 TO 7:G=INP(&HD9+2*L):ON 1-(X=(Z MOD 32)) GOSUB 1760,1740:NEXT J:NEXT X:NEXT Y
25
1240 Z=Z+1:GOTO 1160
26
1250 ' v1.0 only varying upper address bits
27
1260 OUT &HD9,&HC2:OUT &HD8,&HBC:OUT &HDB,&H42:OUT &HDA,&H3A
28
1270 FOR L=1 TO 0 STEP -1:FOR Y=1+2*(Z\32) TO 2+2*(Z\32):FOR X=2*L+Z MOD 32 TO 2*L+1+Z MOD 32:FOR J=0 TO 7:G=INP(&HD9+2*L):GOSUB 1740:NEXT J:NEXT X:NEXT Y:NEXT L
1360 FOR Y=1+2*(Z\32) TO 2+2*(Z\32):FOR X=Z MOD 32 TO 1+Z MOD 32:FOR J=0 TO 7:G=INP(&HD8+2*L):GOSUB 1740:NEXT J:NEXT X:NEXT Y
38
1370 Z=Z+2:GOTO 1330
39
1380 IF K>=&H80 THEN K=K+8*96-&H20
40
1390 OUT &HD9,(K-&H20)\&H40:OUT &HD8,(K-&H20)MOD&H40
41
1400 FOR Y=1+2*(Z\32) TO 2+2*(Z\32):FOR X=Z MOD 32 TO 1+Z MOD 32:FOR J=0 TO 7:G=INP(&HD8+2*L):ON 1-(X=(Z MOD 32)) GOSUB 1760,1740:NEXT J:NEXT X:NEXT Y
42
1410 Z=Z+1:GOTO 1330
43
1420 ' v1.0 only lower-port readbacks
44
1430 OUT &HD9,&H2:OUT &HD8,&H3C:OUT &HDB,&H2:OUT &HDA,&H3A
45
1440 FOR L=1 TO 0 STEP -1:FOR Y=1+2*(Z\32) TO 2+2*(Z\32):FOR X=2*L+Z MOD 32 TO 2*L+1+Z MOD 32:FOR J=0 TO 7:G=INP(&HD8+2*L):GOSUB 1740:NEXT J:NEXT X:NEXT Y:NEXT L
46
1450 Z=Z+4
47
1460 GOSUB 1690:IF A=1 THEN GOTO 1640
48
1470 CLS:Z=0:D=0:Y=0:S$=" "+T$+" 6/9: Read Port Flips "+V$+" ":W=&HFF:GOSUB 1730:W=0:Z=0:D=0
49
1480 ' 8x16 / 16x16 Kanji only read-port address LSB flips
1530 FOR Y=1+2*(Z\32) TO 2+2*(Z\32):FOR X=Z MOD 32 TO 1+Z MOD 32:FOR J=0 TO 7:G=INP(&HD9-(J MOD 2)+2*L):GOSUB 1740:NEXT J:NEXT X:NEXT Y
55
1540 Z=Z+2:GOTO 1500
56
1550 IF K>=&H80 THEN K=K+8*96-&H20
57
1560 OUT &HD9,(K-&H20)\&H40:OUT &HD8,(K-&H20)MOD&H40
58
1570 FOR Y=1+2*(Z\32) TO 2+2*(Z\32):FOR X=Z MOD 32 TO 1+Z MOD 32:FOR J=0 TO 7:G=INP(&HD9-(J MOD 2)+2*L):ON 1-(X=(Z MOD 32)) GOSUB 1760,1740:NEXT J:NEXT X:NEXT Y
59
1580 Z=Z+1:GOTO 1500
60
1590 ' v1.0 only read-port address LSB flips
61
1600 OUT &HD9,&H2:OUT &HD8,&H3C:OUT &HDB,&H2:OUT &HDA,&H3A
62
1610 FOR L=1 TO 0 STEP -1:FOR Y=1+2*(Z\32) TO 2+2*(Z\32):FOR X=2*L+Z MOD 32 TO 2*L+1+Z MOD 32:FOR J=0 TO 7:G=INP(&HD9-(J MOD 2)+2*L):GOSUB 1740:NEXT J:NEXT X:NEXT Y:NEXT L
63
1620 Z=Z+4
64
1630 GOSUB 1690
65
1640 IF A=1 THEN SCREEN 0:PRINT"Abnormal exit"
66
1650 IF B<>2 THEN RETURN:ELSE GOTO 1930
67
1660 FOR X=(Z+2*N) MOD 32 TO 1+(Z+2*N) MOD 32:FOR J=0 TO 7:G=INP(&HD9+2*L):GOSUB 1740:NEXT J:NEXT X:RETURN
68
1670 T=(K MOD &H100)-&H20:K=K\&H100-&H20:IF K>=&H30 THEN K=K-&H30:L=1:ELSE IF K>&H9 AND K<&H30 THEN K=K-&H6:T=T+&H40
69
1680 K=K*96+T:T=K MOD&H40:K=K\&H40:RETURN
70
1690 Y=23:S$=N$:W=&HFF:GOSUB 1730:W=0
71
1700 I$=INKEY$:IF I$=CHR$(&H3) OR I$=CHR$(&H1B) THEN SCREEN 0:A=1:GOTO 1720:ELSE:IF I$<>"" THEN GOTO 1700:ELSE BEEP
72
1710 I$=INKEY$:IF I$="" THEN GOTO 1710:ELSE IF I$=CHR$(&H3) OR I$=CHR$(&H1B) THEN SCREEN 0:A=1:GOTO 1720
73
1720 RETURN
74
1730 D=0:FOR X=0 TO LEN(S$)-1:V=ASC(MID$(S$,1+X,1)):Q=7+2*(V>=&H20 AND V<&H7F):FOR J=0 TO 7:G=PEEK(C+8*V+J):GOSUB 1740:NEXT J:D=D+Q-7:NEXT X:Q=7:RETURN
75
1740 GG=G XOR W:IF GG=0 THEN RETURN:ELSE XX=8*X+D:IF GG=&HFF THEN YY=8*Y+J:LINE(XX,YY)-(XX+Q,YY),15:RETURN:ELSE IF Q=7 AND D MOD 8=0 THEN GOTO 1770:ELSE M=&H80:YY=8*Y+J:FOR I=0 TO Q:IF (GG\M)MOD 2<>0 THEN PSET(XX+I,YY),15