H FTHIRDDIMCF E WORKSTN E BRD 64 1 Vict E BIN 64 1 tmp Vict E BBP 64 1 Inp. protect E ID 3 2 0 E SRCH 1 13 7 Vict E BLN 32 64 2 0 Cursor line Vict E BPS 32 64 2 0 Cursor pos. I DS I 1 60ID I 1 20N1 I 3 40N2 I 5 60N3 I DS I 1 7 MAP I 1 10LOOPS I 2 20MAPX I 3 30MAPY I 4 40MAPZ I 5 7 SIGN I DS I 1 64 BRD I 1 1 B111 I 2 2 B112 I 3 3 B113 I 4 4 B114 I 5 5 B121 I 6 6 B122 I 7 7 B123 I 8 8 B124 I 9 9 B131 I 10 10 B132 I 11 11 B133 I 12 12 B134 I 13 13 B141 I 14 14 B142 I 15 15 B143 I 16 16 B144 I 17 17 B211 I 18 18 B212 I 19 19 B213 I 20 20 B214 I 21 21 B221 I 22 22 B222 I 23 23 B223 I 24 24 B224 I 25 25 B231 I 26 26 B232 I 27 27 B233 I 28 28 B234 I 29 29 B241 I 30 30 B242 I 31 31 B243 I 32 32 B244 I 33 33 B311 I 34 34 B312 I 35 35 B313 I 36 36 B314 I 37 37 B321 I 38 38 B322 I 39 39 B323 I 40 40 B324 I 41 41 B331 I 42 42 B332 I 43 43 B333 I 44 44 B334 I 45 45 B341 I 46 46 B342 I 47 47 B343 I 48 48 B344 I 49 49 B411 I 50 50 B412 I 51 51 B413 I 52 52 B414 I 53 53 B421 I 54 54 B422 I 55 55 B423 I 56 56 B424 I 57 57 B431 I 58 58 B432 I 59 59 B433 I 60 60 B434 I 61 61 B441 I 62 62 B442 I 63 63 B443 I 64 64 B444 C SETON 90 Vict C SETON 65 Inp. protect Vict C Z-ADDBLN,1 $LINE Cursor line Vict C Z-ADDBPS,1 $POS Cursor pos. C *IN66 DOWEQ*OFF Vict C EXF TAG Vict C MOVEABBP *IN,1 Inp. protect C EXFMTSCR1 Vict C 03 GOTO ENDPGM F3 pressed Vict C EXSR VALID Validate C EXSR CHEK C 66 LEAVE C EXSR COMPGO C EXSR CHEK C 66 LEAVE C ENDDO C EXSR FLASH C EXFMTSCR1 Vict C ENDPGM TAG C SETON LR * C COMPGO BEGSR C SETOF 90 C Z-ADD-5 SCOR 20 C 1 DO 64 MX 20 C BRD,MX IFEQ ' ' C MOVE 'O' BRD,MX C EXSR CHEK C MULT 2 TPX C TPO SUB TPX @SC 20 C SCOR IFLT @SC C Z-ADD@SC SCOR C Z-ADDMX MO 20 C ENDIF C MOVE ' ' BRD,MX C ENDIF C ENDDO C MOVE 'O' BRD,MO Vict C MOVE *ON BBP,MO Inp.protect Vict C Z-ADDBLN,MO $LINE Cursor line Vict C Z-ADDBPS,MO $POS Cursor pos. C SETON 90 C ENDSR * C FLASH BEGSR C WRITESCR1 C SETOF 66 C WRITESCR1 C SETON 66 C WRITESCR1 C SETOF 66 C WRITESCR1 C SETON 66 C ENDSR * C CHEK BEGSR C MOVE *ZEROS @STR 64 C Z-ADD0 TPX C Z-ADD0 TPO C 1 DO 13 LO 20 C MOVE SRCH,LO MAP C SELEC C LOOPS WHEQ 3 C Z-ADD0 C3 20 C Z-ADD0 C2 20 C LOOPS WHEQ 2 C Z-ADD3 C3 20 C Z-ADD0 C2 20 C LOOPS WHEQ 1 C Z-ADD3 C3 20 C Z-ADD3 C2 20 C ENDSL * C MOVEASIGN *IN,80 * C C3 DO 3 N3 20 C C2 DO 3 N2 20 * C Z-ADD0 PX 10 C Z-ADD0 PO 10 C MOVEA@STR *IN,1 C 0 DO 3 N1 20 C N80 Z-ADDID,MAPX X 20 C N81 Z-ADDID,MAPY Y 20 C N82 Z-ADDID,MAPZ Z 20 C 80 3 SUB ID,MAPX X C 81 3 SUB ID,MAPY Y C 82 3 SUB ID,MAPZ Z * * C EXSR CALC C ENDDO C PX IFGT 0 C PO ANDGT0 C Z-ADD0 PX C Z-ADD0 PO C ENDIF * C *IN90 IFEQ *ON C PX IFEQ 4 C PO OREQ 4 C SETON 66 C ENDIF C ENDIF C PX IFGT TPX C Z-ADDPX TPX 20 C ENDIF C PO IFGT TPO C Z-ADDPO TPO 20 C ENDIF C 66 LEAVE C ENDDO C 66 LEAVE C ENDDO C 66 LEAVE * C ENDDO * C ENDSR ** C CALC BEGSR C Z MULT 16 N 20 C Y MULT 4 @N 20 C ADD @N N C ADD X N C ADD 1 N C MOVE *ON *IN,N C BRD,N IFEQ 'X' C ADD 1 PX C ENDIF C BRD,N IFEQ 'O' C ADD 1 PO C ENDIF C ENDSR Vict *------- Validate input ---------------------------------------- Vict C VALID BEGSR Vict * Vict C MOVE *OFF ERR# 1 Vict C Z-ADD*ZERO CNT# 20 Vict C MOVEA*ZEROS BIN Vict * Vict C 1 DO 64 #I 20 Vict C BBP,#I IFNE *ON Vict C BRD,#I ANDNE*BLANK Vict C MOVE *ON BIN,#I Vict C ADD 1 CNT# Vict C BRD,#I IFNE 'X' Vict C MOVE *ON ERR# Vict C ENDIF Vict C ENDIF Vict C ENDDO Vict * Vict C SELEC Vict * Vict C ERR# WHEQ *OFF // OK! Vict C CNT# ANDEQ1 Vict C 1 DO 64 #I Vict C BIN,#I IFEQ *ON Vict C MOVE *ON BBP,#I Vict C LEAVE Vict C ENDIF Vict C ENDDO Vict * Vict C CNT# WHEQ 0 // No move Vict C EXFMTWIND2 Vict C GOTO EXF Vict * Vict C ERR# WHEQ *ON // Error or Vict C CNT# ORGT 1 // violation Vict C MOVEABIN *IN,1 Vict C MOVE *ON *IN,66 Reverse ON Vict C WRITESCR1 Vict C EXFMTWIND2 Vict C MOVE *OFF *IN,66 Reverse OFF Vict C 1 DO 64 #I Vict C BIN,#I IFEQ *ON Vict C MOVE *BLANK BRD,#I Vict C ENDIF Vict C ENDDO Vict C GOTO EXF Vict * Vict C ENDSL Vict * Vict C ENDSR Vict *------- Validate input end ------------------------------------ ** 3123000 3231000 3312000 2112000 2112010 2211000 2211001 2121000 2121001 1111000 1111001 1111011 1111010 ** 0303030305050505070707070909090907070707090909091111111113131313 1111111113131313151515151717171715151515171717171919191921212121 ** 1014182208121620061014180408121624283236222630342024283218222630 3842465036404448343842463236404452566064505458624852566046505458