"** 04-cas.pdf page 1 " cas " Usage: cas [ input [ output ] ] " graphics display character assembler??? narg = i 017777 lac 017777 tad d5 dac name1 tad d4 dac name2 lac narg " get arg count sad d4 " 4? jmp 1f " yes: default both to tty sad d8 " 8? jmp 2f " no: default input to tty jmp 3f " yes: use files from command line 1: law ttyout dac name1 2: law ttyin dac name2 3: sys open; name2: 0; 0 sma jmp 1f lac name2 dac 2f lac d1 sys write; 2: 0; 4 lac d1 sys write; mes; 2 sys exit 1: sys open; name1: 0; 1 sma jmp 1f lac name1 dac 2f lac o17 sys creat; 2: 0 sma jmp 1f lac name1 dac 2f lac d1 sys write; 2: 0; 4 lac d1 sys write; mes; 2 sys exit mes: 040077;012 1: dzm nchar dzm x dzm y dzm parflg dzm nins dzm nwds lac bufp dac 10 advanc: "** 04-cas.pdf page 2 lac nchar dzm nchar sza jmp adv1 lac d2 sys read; char; 1 sna jmp done lac char and o777 dac nchar lac char lrss 9 adv1: sna jmp advanc dac char lac labflg sna jmp 2f lac char sad o12 skp jmp 1f dzm labflg dac i 11 jmp advanc 1: dac i 11 jmp advanc 2: lac parflg sza jmp atoz lac char sad o12 jmp advanc sad o72 " ':'? skp " yes jmp 1f " no -4 dac labflg dac mod3 jms wbuf "??? lac lbufp dac 11 lac o170072 " "x:" dac i 10 lac o12 " \n dac i 10 lac o60 " 0 dac i 10 isz nwds isz nwds isz nwds jmp advanc 1: sad o170 skp jmp 1f "** 04-cas.pdf page 3 dzm vis jmp advanc 1: sad o166 " 'v'? skp jmp 1f lac visbit dac vis jmp advanc 1: sad o162 " 'r'? skp jmp letr isz mod3 skp jmp 2f lac o60060 1: dac i 10 isz nwds isz mod3 jmp 1b 2: lac o12 dac i 10 isz nwds lac lbufp dac 11 1: "??? lac i 11 sad o12 jmp 1f dac i 10 isz nwds jmp 1b 1: lac o75170 " =x dac i 10 isz nwds lac ob1 dac i 10 isz nwds lac sp dac i 10 isz nwds lac nins dzm nins tad o100 lmq llss 10 cla llss 3 alss 6 llss 3 tad o60060 dac i 10 cla llss 3 alss 6 llss 3 tad o60060 "** 04-cas.pdf page 4 dac i 10 cla llss 3 alss 6 llss 3 tad o60060 dac i 10 lac nwds tad d4 dac nwds lac o12012 dac i 10 dzm x dzm y jmp advanc letr: tad om141 "??? spa jmp error tad dm16 sma "??? jmp error cma "??? tad dm3 dac ny -1 dac parflg jmp advanc atoz: lac char tad om141 spa jmp error tad dm14 sma jmp error tad d14 dac nx loop: -1 tad x cma tad nx dac delx -1 tad y cma tad ny dac dely " generate direction lac delx sna jmp c1 spa jmp c2 lac dely ;"dx ,gr, 0 sna jmp c3 "** 04-cas.pdf page 5 spa jmp c4 lac d1 jmp b c3: lac d2 jmp a c4: lac d3 jmp b c1: lac dely sna jmp out spa jmp c5 cla jmp a c5: lac d4 jmp a c2: lac dely sna jmp c6 spa jmp c7 lac d7 jmp b c6: lac d6 jmp a c7: lac d5 jmp b " " a: dac direc lac delx sma jmp 1f cma tad d1 dac delx 1: lac dely sma jmp 1f cma tad d1 1: tad delx tad dm4 sma cla tad d3 dac dist tad incxp dac tmp "** 04-cas.pdf page 6 lac i tmp dac incx lac dist tad incyp dac tmp lac i tmp dac incy jmp com " b: dzm dist dac direc lac incxt dac incx lac incyt dac incy " com: isz nins lac dist alss 4 xor vis xor direc isz mod3 skp jmp 1f 2: lmq llss 12 cla llss 3 alss 6 llss 3 tad o60060 dac i 10 isz nwds jmp 3f 1: dac tmp lac o12060 dac i 10 isz nwds -3 dac mod3 lac tmp jmp 2b 3: lac direc tad incx dac tmp lac i tmp tad x dac x lac direc tad incy dac tmp lac i tmp tad y dac y jmp loop "** 04-cas.pdf page 7 out: lac nx dac x lac ny dac y dzm parflg jmp advanc done: lac d2 sys close jms wbuf lac d3 sys close sys exit error: lac d1 sys write; char; 1 lac d1 sys write; mes; 2 dzm parflg dzm labflg jmp advanc wbuf: 0 lac nwds dac 1f lac d3 sys write; buf; 1: 0; " PLB: label was 1f: dzm nwds lac bufp dac 10 jmp i wbuf d1: 1 d2: 2 d3: 3 d4: 4 d5: 5 d6: 6 d7: 7 d8: 8 o12: 012 o75170: 075170 ob1: 055142 sp: 053060 o60: 060 o60060: 060060 o73: 073 "d6: 6 "seems like a dupe d14: 14 dm14: -14 dm16: -16 om141: -0141 "??? dm3: -3 dm4: -4 o162: 0162 o166: 0166 "** 04-cas.pdf page 8 o17: 017 o777: 0777 o72: 072 o170: 0170 o10000: 010000 o20000: 020000 o200000: 0200000 o41: 041 ttyin: 0164164;0171151;0156040;040040 ttyout: 0164164;0171157;0165164;040040 char: .=.+1 parflg: .=.+1 labflg: .=.+1 obuf: .=.+8 x: .=.+1 y: .=.+1 nx: .=.+1 ny: .=.+1 vis: .=.+1 nchar: .=.+1 " incxp:incxt incyp:incyt incxt: x1;x2;x3;x4 incyt: y1;y2;y3;y4 " x1: 0;1;1;1;0;-1;-1;-1 x2: 0;2;2;2;0;-2;-2;-2 x3: 0;3;3;3;0;-3;-3;-3 x4: 0;4;4;4;0;-4;-4;-4 y1: 1;1;0;-1;-1;-1;0;1 y2: 2;2;0;-2;-2;-2;0;2 y3: 3;3;0;-3;-3;-3;0;3 y4: 4;4;0;-4;-4;-4;0;4 delx: .=.+1 dely: .=.+1 incx: .=.+1 incy: .=.+1 direc: .=.+1 dist: .=.+1 visbit: 010 mod3: .=.+1 tmp: .=.+1 buf: .=.+500 bufp: buf-1 lbuf: .=.+10 lbufp: lbuf-1 nwds: .=.+1 o170072: 0170072 nins: .=.+1 o100: 0100 o12012: 012012 o12060: 012060