10
20 :
30 DEFPROCGo:abort%=FALSE:halt%=0:run%=TRUE:PROCEscOff
40 REPEAT:IF(debug%AND1):IF rpc%>=trace0% AND rpc%<=trace1%:x%=POS:y%=VPOS:VDU30:PROCRegDump:VDU31,x%,y%:IF(debug%AND2):IF GET
50 B%=mem%?rpc%:rpc%=rpc%+1:UNTIL EVAL("FNm"+STR$~(B%AND&1C)+"+FN_"+STR$~(B%AND(((B%AND1)<>1)OR&E3))):PROCEscOn:run%=FALSE:IF NOTquiet% OR abort%:PROCRegDump
60 ENDPROC
70 :
80 :
90 DEFFNbr(A%):rpc%=rpc%+1:IFA%=0:=0
100 IFmem%?(rpc%-1)<128:rpc%=(rpc%+mem%?(rpc%-1))AND&FFFF:=0
110 rpc%=(rpc%+mem%?(rpc%-1)-256)AND&FFFF:=0
120 :
130 :
140 DEFFNm0 :A%=(mem%!((mem%?rpc%+rx%)AND&FF))AND&FFFF:=0 :
150 DEFFNm4 :A%=mem%?rpc%:=0 :
160 DEFFNm8 :A%=rpc%:=0 :
170 DEFFNmC :A%=(mem%!rpc%)AND&FFFF:rpc%=rpc%+1:=0 :
180 DEFFNm10:A%=(mem%!(mem%?rpc%)+ry%)AND&FFFF:=0 :
190 DEFFNm12:A%=(mem%!(mem%?rpc%))AND&FFFF:=0 :
200 DEFFNm14:A%=(mem%?rpc%+rx%)AND&FF:=0 :
210 DEFFNm18:A%=(mem%!rpc%+ry%)AND&FFFF:rpc%=rpc%+(B%AND1):=0 :
220 DEFFNm1C:A%=(mem%!rpc%+rx%)AND&FFFF:rpc%=rpc%+1:=0 :
230 :
240 :
250 DEFFN_1 :ra%=ra%ORmem%?A%:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):rpc%=rpc%+1:=0 :
260 DEFFN_21:ra%=ra%ANDmem%?A%:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):rpc%=rpc%+1:=0:
270 DEFFN_41:ra%=ra%EORmem%?A%:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):rpc%=rpc%+1:=0:
280 DEFFN_61:ra%=ra%+mem%?A%+(rp%AND1):rp%=(rp%AND254)+(ra%DIV256):ra%=ra%AND255:rp%=(rp%AND&3D)OR(ra%AND128)OR(((ra%AND128)DIV2)EOR(ra%AND64))OR((ra%=0)AND2):rpc%=rpc%+1:=0 :
290 DEFFN_81:IFB%=&8A:=FN_8A ELSE PROCio_wr(A%,ra%):rpc%=rpc%+1:=0 :
300 DEFFN_A1:ra%=FNio_rd(A%):rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):rpc%=rpc%+1:=0 :
310 DEFFN_C1:A%=ra%-mem%?A%:rp%=(rp%AND254)+(((A%EOR256)AND256)DIV256):A%=A%AND255:rp%=(rp%AND&3D)OR(A%AND128)OR((A%=0)AND2):rpc%=rpc%+1:=0 :
320 DEFFN_E1:ra%=ra%-mem%?A%-(1-(rp%AND1)):rp%=(rp%AND254)+(((ra%EOR256)AND256)DIV256):ra%=ra%AND255:rp%=(rp%AND&3D)OR(ra%AND128)OR(((ra%AND128)DIV2)EOR(ra%AND64))OR((ra%=0)AND2):rpc%=rpc%+1:=0 :
330 :
340 DEFFN_12:=FNm12+FN_1 :
350 DEFFN_32:=FNm12+FN_21 :
360 DEFFN_52:=FNm12+FN_41 :
370 DEFFN_72:=FNm12+FN_61 :
380 DEFFN_92:=FNm12+FN_81 :
390 DEFFN_B2:=FNm12+FN_A1 :
400 DEFFN_D2:=FNm12+FN_C1 :
410 DEFFN_F2:=FNm12+FN_E1 :
420 :
430 :
440 DEFFN_8 :mem%?rs%=rp%:rs%=rs%-1:=0 :
450 DEFFN_28:rs%=rs%+1:rp%=mem%?rs%:=0 :
460 DEFFN_48:mem%?rs%=ra%:rs%=rs%-1:=0 :
470 DEFFN_5A:mem%?rs%=ry%:rs%=rs%-1:=0 :
480 DEFFN_68:rs%=rs%+1:ra%=mem%?rs%:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):=0 :
490 DEFFN_7A:rs%=rs%+1:ry%=mem%?rs%:rp%=(rp%AND&7D)OR(ry%AND128)OR((ry%=0)AND2):=0 :
500 DEFFN_DA:mem%?rs%=rx%:rs%=rs%-1:=0 :
510 DEFFN_FA:rs%=rs%+1:rx%=mem%?rs%:rp%=(rp%AND&7D)OR(rx%AND128)OR((rx%=0)AND2):=0 :
520 :
530 :
540 DEFFN_10:=FNbr((rp%AND128)EOR128) :
550 DEFFN_30:=FNbr(rp%AND128) :
560 DEFFN_50:=FNbr((rp%AND64)EOR64) :
570 DEFFN_70:=FNbr(rp%AND64) :
580 DEFFN_80:=FNbr(1) :
590 DEFFN_90:=FNbr((rp%EOR1)AND1) :
600 DEFFN_B0:=FNbr(rp%AND1) :
610 DEFFN_D0:=FNbr((rp%AND2)EOR2) :
620 DEFFN_F0:=FNbr(rp%AND2) :
630 :
640 :
650 DEFFN_18:rp%=rp%AND&FE:=0 :
660 DEFFN_38:rp%=rp%OR1:=0 :
670 DEFFN_58:rp%=rp%AND&FB:=0 :
680 DEFFN_78:rp%=rp%OR4:=0 :
690 DEFFN_B8:rp%=rp%AND&BF:=0 :
700 DEFFN_D8:rp%=rp%AND&F7:=0 :
710 DEFFN_F8:rp%=rp%OR8:PRINT"**BCD not supported***":=0 :
720 :
730 :
740 DEFFN_0:rpc%=rpc%+1:rs%=rs%-3:mem%?(rs%+1)=rp%OR&10:mem%?(rs%+2)=rpc%:mem%?(rs%+3)=rpc%DIV256:rpc%=(mem%!&FFFE)AND&FFFF:rp%=rp%OR4:=0 :
750 DEFFN_20:a%=mem%!rpc%:rpc%=rpc%+1:rs%=rs%-2:mem%?(rs%+1)=rpc%:mem%?(rs%+2)=rpc%DIV256:rpc%=a%AND&FFFF:=0
760 :
770 DEFFN_40:rp%=mem%?(rs%+1):rpc%=(mem%!(rs%+2))AND&FFFF:rs%=rs%+3:rpc%=rpc%+1:=0 :
780 DEFFN_4C:rpc%=A%:=0 :
790 DEFFN_60:rpc%=(mem%!(rs%+1))AND&FFFF:rs%=rs%+2:rpc%=rpc%+1:=0 :
800 DEFFN_6C:rpc%=(mem%!A%)AND&FFFF:=0 :
810 DEFFN_7C:rpc%=(mem%!A%)AND&FFFF:=0 :
820 DEFFN_EA:=0 :
830 :
840 :
850 DEFFN_8A:ra%=rx%:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):=0 :
860 DEFFN_98:ra%=ry%:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):=0 :
870 DEFFN_9A:rs%=rx%+&100:=0 :
880 DEFFN_A8:ry%=ra%:rp%=(rp%AND&7D)OR(ry%AND128)OR((ry%=0)AND2):=0 :
890 DEFFN_AA:rx%=ra%:rp%=(rp%AND&7D)OR(rx%AND128)OR((rx%=0)AND2):=0 :
900 DEFFN_BA:rx%=rs%AND&FF:rp%=(rp%AND&7D)OR(rx%AND128)OR((rx%=0)AND2):=0 :
910 :
920 :
930 DEFFN_1A:ra%=(ra%+1)AND&FF:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):=0 :
940 DEFFN_3A:ra%=(ra%-1)AND&FF:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):=0 :
950 DEFFN_88:ry%=(ry%-1)AND&FF:rp%=(rp%AND&7D)OR(ry%AND128)OR((ry%=0)AND2):=0 :
960 DEFFN_C8:ry%=(ry%+1)AND&FF:rp%=(rp%AND&7D)OR(ry%AND128)OR((ry%=0)AND2):=0 :
970 DEFFN_CA:rx%=(rx%-1)AND&FF:rp%=(rp%AND&7D)OR(rx%AND128)OR((rx%=0)AND2):=0 :
980 DEFFN_E8:rx%=(rx%+1)AND&FF:rp%=(rp%AND&7D)OR(rx%AND128)OR((rx%=0)AND2):=0 :
990 :
1000 DEFFN_C6: :
1010 DEFFN_CE: :
1020 DEFFN_D6: :
1030 DEFFN_DE: :
1040 mem%?A%=(mem%?A%-1)AND&FF:rp%=(rp%AND&7D)OR((mem%?A%)AND128)OR((mem%?A%=0)AND2):rpc%=rpc%+1:=0
1050 :
1060 DEFFN_E6: :
1070 DEFFN_EE: :
1080 DEFFN_F6: :
1090 DEFFN_FE: :
1100 mem%?A%=(mem%?A%+1)AND&FF:rp%=(rp%AND&7D)OR((mem%?A%)AND128)OR((mem%?A%=0)AND2):rpc%=rpc%+1:=0
1110 :
1120 :
1130 DEFFN_A2:A%=rpc% :
1140 DEFFN_A6: :
1150 DEFFN_AE: :
1160 DEFFN_B6:A%=(mem%?rpc%+ry%)AND&FF :
1170 DEFFN_BE:A%=(A%-rx%+ry%)AND&FFFF:rpc%=rpc%+1 :
1180 rx%=mem%?A%:rp%=(rp%AND&7D)OR(rx%AND128)OR((rx%=0)AND2):rpc%=rpc%+1:=0
1190 :
1200 DEFFN_A0:A%=rpc% :
1210 DEFFN_A4: :
1220 DEFFN_AC: :
1230 DEFFN_B4: :
1240 DEFFN_BC: :
1250 ry%=mem%?A%:rp%=(rp%AND&7D)OR(ry%AND128)OR((ry%=0)AND2):rpc%=rpc%+1:=0
1260 :
1270 :
1280 DEFFN_86: :
1290 DEFFN_8E: :
1300 DEFFN_96:A%=(A%-rx%+ry%)AND&FFFF :
1310 mem%?A%=rx%:rpc%=rpc%+1:=0
1320 :
1330 DEFFN_84: :
1340 DEFFN_8C: :
1350 DEFFN_94: :
1360 mem%?A%=ry%:rpc%=rpc%+1:=0
1370 :
1380 :
1390 DEFFN_64: :
1400 DEFFN_74: :
1410 DEFFN_9C:A%=(A%-rx%)AND&FFFF :
1420 DEFFN_9E: :
1430 mem%?A%=0:rpc%=rpc%+1:=0
1440 :
1450 :
1460 DEFFN_A :ra%=ra%*2:rp%=(rp%AND&FE)+ra%DIV256:ra%=ra%AND&FF:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):=0: :
1470 DEFFN_6 : :
1480 DEFFN_E : :
1490 DEFFN_16: :
1500 DEFFN_1E: :
1510 a%=mem%?A%*2:rp%=(rp%AND&FE)+a%DIV256:mem%?A%=a%:rp%=(rp%AND&7D)OR(mem%?A%AND128)OR((mem%?A%=0)AND2):rpc%=rpc%+1:=0
1520 :
1530 DEFFN_2A:ra%=ra%*2+(rp%AND1):rp%=(rp%AND&FE)+ra%DIV256:ra%=ra%AND&FF:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):=0 :
1540 DEFFN_26: :
1550 DEFFN_2E: :
1560 DEFFN_36: :
1570 DEFFN_3E: :
1580 a%=mem%?A%*2+(rp%AND1):rp%=(rp%AND&FE)+a%DIV256:mem%?A%=a%:rp%=(rp%AND&7D)OR(mem%?A%AND128)OR((mem%?A%=0)AND2):rpc%=rpc%+1:=0
1590 :
1600 DEFFN_4A:rp%=(rp%AND&FE)OR(ra%AND1):ra%=ra%DIV2:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):=0 :
1610 DEFFN_46: :
1620 DEFFN_4E: :
1630 DEFFN_56: :
1640 DEFFN_5E: :
1650 rp%=(rp%AND&FE)OR(mem%?A%AND1):mem%?A%=mem%?A%DIV2:rp%=(rp%AND&7D)OR(mem%?A%AND128)OR((mem%?A%=0)AND2):rpc%=rpc%+1:=0
1660 :
1670 DEFFN_6A:ra%=ra%+256*(rp%AND1):rp%=(rp%AND&FE)+(ra%AND1):ra%=ra%DIV2:rp%=(rp%AND&7D)OR(ra%AND128)OR((ra%=0)AND2):=0 :
1680 DEFFN_66: :
1690 DEFFN_6E: :
1700 DEFFN_76: :
1710 DEFFN_7E: :
1720 a%=mem%?A%+256*(rp%AND1):rp%=(rp%AND&FE)+(a%AND1):mem%?A%=a%DIV2:rp%=(rp%AND&7D)OR(mem%?A%AND128)OR((mem%?A%=0)AND2):rpc%=rpc%+1:=0
1730 :
1740 :
1750 DEFFN_89:A%=rpc% :
1760 DEFFN_24: :
1770 DEFFN_2C: :
1780 DEFFN_34: :
1790 DEFFN_3C: :
1800 rp%=(rp%AND&3D)OR(mem%?A%AND&C0)OR(((mem%?A%ANDra%)=0)AND2):rpc%=rpc%+1:=0
1810 :
1820 :
1830 DEFFN_C0:A%=rpc% :
1840 DEFFN_C4: :
1850 DEFFN_CC: :
1860 A%=ry%-mem%?A%:rp%=(rp%AND254)+(((A%EOR256)AND256)DIV256):A%=A%AND255:rp%=(rp%AND&3D)OR(A%AND128)OR((A%=0)AND2):rpc%=rpc%+1:=0
1870 :
1880 DEFFN_E0:A%=rpc% :
1890 DEFFN_E4: :
1900 DEFFN_EC: :
1910 A%=rx%-mem%?A%:rp%=(rp%AND254)+(((A%EOR256)AND256)DIV256):A%=A%AND255:rp%=(rp%AND&3D)OR(A%AND128)OR((A%=0)AND2):rpc%=rpc%+1:=0
1920 :
1930 DEFFN_4 :Z%=FNm4 :
1940 DEFFN_C :Z%=FNmC :
1950 rp%=(rp%AND253)+(((mem%?A% AND ra%)=0)AND2):mem%?A%=mem%?A% OR ra%:rpc%=rpc%+1:=0
1960 :
1970 DEFFN_14:Z%=FNm4 :
1980 DEFFN_1C:Z%=FNmC :
1990 rp%=(rp%AND253)+(((mem%?A% AND ra%)=0)AND2):mem%?A%=mem%?A% AND NOT ra%:rpc%=rpc%+1:=0
2000 :
2010 :
2020
2030 DEFFN_3 : :
2040 DEFFN_23: :
2050 DEFFN_43: :
2060 DEFFN_63: :
2070 DEFFN_83: :
2080 DEFFN_A3: :
2090 DEFFN_C3: :
2100 DEFFN_E3: :
2110 =FNmos(mem%?(rpc%-1))
2120 :
2130 :
2140 DEFFN_2 : :
2150 DEFFN_22: :
2160 DEFFN_42: :
2170 DEFFN_44: :
2180 DEFFN_54: :
2190 DEFFN_5C: :
2200 DEFFN_62: :
2210 DEFFN_82: :
2220 DEFFN_C2: :
2230 DEFFN_D4: :
2240 DEFFN_DC: :
2250 DEFFN_E2: :
2260 DEFFN_F4: :
2270 DEFFN_FC: :
2280 =0