blob: 87228cc764ca26068b5d007712c00a4f5454f1c4 [file] [log] [blame] [raw]
deck 21. extra instr for general computing
set loopbox O2=800
tr zero O2=453
21 1 1800 00 0000 0970 set loopbox: 0 800 00r nnn
if r=0 resets loopbox (= 000 000 000)
if r=1 sets loopbox for a-param, with value 0-999 from float
contents of register nnn. clears loobox value
for b and c. if float value at register is outside
range 0-999 program stops at 2222
if r=2 sets loobox for b
if r=3 sets loobox for c
21 2 0998 00 1000 0000 param1m (const to decrement param)
21 3 0997 35 0006 0987 bxa slt 0006 svlb
21 4 0996 35 0003 0987 bxb slt 0003 svlb
21 5 0995 00 0000 0987 bxc nop svlb
21 6 0994 60 0000 0950 fldc rau 0000 setb1
21 7 0993 00 0000 0000 shbx
21 8 0992 00 0000 0000 svfc
21 9 0991 01 0000 0000 hi01
21 10 0990 50 0000 0000 hi50
21 11 0970 65 1045 0971 ral paramb is nnn0000000
21 12 0971 45 0972 0987 brnz (cont) svlb
21 13 0972 16 0998 0973 sl param1m
21 14 0973 45 0975 0977 brnz (cont) seta
21 15 0975 16 0998 0976 sl param1m
21 16 0976 45 0979 0978 brnz setc setb
21 17 0977 69 0997 0980 seta ld bxa setbx
21 18 0978 69 0996 0980 setb ld bxb setbx
21 19 0979 69 0995 0980 setc ld bxc setbx
21 20 0980 24 0993 0981 setbx std shbx
21 21 0981 65 1023 0982 ral paramc lower acc is nnn0000000
21 22 0982 30 0003 0983 srt 3 00 0nnn 000
21 23 0983 15 0994 8002 al fldc 8002
8002 rau [c] setb1 read float value at [c] as nnnxxxxxee
21 24 0984 35 0003 0985 setb2 slt 3 upper acc is 000000nnn
21 25 0985 16 8002 0986 setb3 sl 8002 clear lower acc
21 26 0986 69 0993 8001 ld shbx 8001
8001 slt [0,3,6] upper acc is 000 000 nnn, 000 nnn 000, or nnn 000 000
21 27 0987 21 1017 1095 svlb stu lbox 1095 save loopbox
21 28 0950 21 0992 0951 setb1 stu svfc save [c] float value
21 29 0951 44 0952 0987 brnzu svlb if [c] is zero go to save loopbox
21 30 0952 46 1315 0953 brmin 1315 if [c] is <0 go to 2222 stop
21 31 0953 35 0008 0954 slt 8 upper acc is ee00000000
21 32 0954 11 0990 0955 su hi50
21 33 0955 44 0956 0962 brnzu i00n jump if [c] is in range 0-9
21 34 0956 11 0991 0957 su hi01
21 35 0957 44 0958 0961 brnzu i0nn jump if [c] is in range 10-99
21 36 0958 11 0991 0959 su hi01
21 37 0959 44 1315 0960 brnzu 1315 innn jump if [c] is in range 100-999, else go to 2222 stop
21 38 0960 69 0969 0963 innn ld stnnn ixxx
21 39 0961 69 0968 0963 i0nn ld stn0n ixxx
21 40 0962 69 0967 0963 i00n ld st00n ixxx
21 41 0963 24 0984 0964 ixxx std setb2
21 42 0964 65 0992 0984 ral svfc setb2
21 43 1453 60 1009 0965 rau last get last result
tr zero: 0 453 bbb ccc
goto b if last result is zero
goto c if last result is non zero
21 44 0965 30 0002 0966 srt 2
21 45 0966 44 1120 0974 brnzu gotoc gotob
21 46 0974 60 1045 1027 gotob rau paramb goto
21 47 0967 35 0001 0985 st00n slt 1 setb3
21 48 0968 35 0002 0985 st0nn slt 2 setb3
21 49 0969 35 0003 0985 stnnn slt 3 setb3
21 50 0988 00 0000 0000 vacant location
21 51 0989 00 0000 0000 vacant location