"** 08-rest.pdf page 8 "[handwritten page number top right of scan - 1] " ed1 lac d1 sys write; 1f; 3 " say hello lac o17 sys creat; tname " create e.tmp for write spa sys save " dump core on error! dac sfo sys open; tname; 0 " open e.tmp for read spa sys save " dump core on error! dac sfi -1 tad lnodp dac zermp tad d1 dac zerop dac dot tad d1 dac eofp dzm i eofp dzm i zerop dzm lastre dzm fbuf lac d1 dac dskadr dac wrflg dzm diskin "o------------> [scan markup] jmp advanc 1: <ed>; <it>; 012 advanc: jms rline lac linep dac tal dzm adrflg " clear address flag jms addres " get address? jmp comand " no: check if command -1 dac adrflg " set address flag lac addr dac addr1 " set both addr1 & 2 dac addr2 1: lac char sad o54 " comma? jmp 2f sad o73 " semi? skp jmp chkwrp lac addr dac dot 2: " here for address range jms addres jmp error lac addr2 dac addr1 lac addr dac addr2 jmp 1b "** 08-rest.pdf page 9 "[handwritten page number top right of scan - 2] chkwrp: -1 tad addr1 jms betwen; d1; addr2 jmp error comand: lac char sad o141 " a? jmp ca sad o143 " c? jmp cc sad o144 " d? jmp cd sad o160 " p? jmp cp sad o161 " q? jmp cq sad o162 " r? jmp cr sad o163 " s? jmp cs sad o167 " w? jmp cw sad o12 " newline? jmp cnl sad o75 " =? jmp ceq jmp error ca: " a(ppend) jms newline jms setfl lac addr2 dac dot ca1: jms rline lac line sad o56012 " .NL? jmp advanc jms append jmp ca1 cc: cd: " c(change) and d(elete) jms newline jms setdd lac addr1 sad zerop jmp error dac dot tad dm1 dac 9 lac addr2 dac 8 2: lac i 8 dac i 9 sza jmp 2b lac 9 "** 08-rest.pdf page 10 "[handwritten page number top right of scan - 3] dac eofp lac char sad o144 " was delete? jmp advanc " yes -1 tad dot dac dot jmp ca1 cp: " p(rint) jms newline cp1: jms setdd lac addr1 sad zerop jmp error 1: lac addr1 dac dot lac i addr1 jms gline dac 2f lac d1 sys write; line; 2: 0 lac addr1 sad addr1 jmp advanc tad d1 dac addr1 jmp 1b cq: " q(uit) jms newline lac adrflg sza jmp error sys exit cr: " r(ead) jms setfl lac addr2 dac dot jms rname "------------> [scan markup] sys open; fbuf; 0 spa jmp error dac tfi lac linep dac tal dzm num 1: lac tfi sys read; tbuf; 64 sza jmp 2f lac tfi sys close jms number jmp advanc 2: cma "** 08-rest.pdf page 11 "[handwritten page number top right of scan - 4] tad d1 rcl dac c1 lac tbufp dac tal1 2: jms getsc; tal1 sna jmp 3f jms putsc; tal isz num sad o12 skp jmp 3f lac tal add o400000 and o17777 cma tad linep cma dac linsiz jms append lac linep dac tal 3: isz c1 jmp 2b jmp 1b cw: " w(rite) jms setfl lac i addr1 sna jmp error jms rname lac o17 sys creat; fbuf spa jmp error dac tfi -128 dac c2 lac tbufp dac tal1 dzm num 1: lac i addr1 jms gline rcl cma tad d1 dac c1 lac linep dac tal 2: jms getsc; tal sna jmp 3f isz num jms putsc; tal1 isz c2 "** 08-rest.pdf page 12 "[handwritten page number top right of scan - 5] jmp 3f lac tfi sys write; tbuf; 64 -128 dac c2 lac tbufp dac tal1 3: isz c1 jmp 2b lac addr1 sad addr2 jmp 1f isz addr1 jmp 1b 1: lac tal1 sma cla jmp 1f jms putsc; tal1 1: -1 tad tbufp cma tad tal1 dac 1f lac tfi sys write; tbuf; 1: 0 lac tfi sys close jms number jmp advanc cnl: " newline lac adrflg sna jmp 1f lac addr2 dac addr1 jmp cp1 1: lac dot tad d1 sad eofp jmp error dac dot jmp cp1 ceq: " = command jms newline jms setfl lac addr2 dac dot cma tad zerop cma dac num jms number jmp advanc setdd: 0 "** 08-rest.pdf page 13 "[handwritten page number top right of scan - 6] lac adrflg sza jmp i setdd lac dot dac addr1 dac addr2 jmp i setdd setfl: 0 lac adrflg sza jmp i setfl lac zerop tad d1 dac addr1 -1 tad eofp dac addr2 jmp i setfl newline: 0 jms getsc; tal " get input char sad o12 " newline? jmp i newline jmp error " no, complain addres: 0 dzm minflg "..) [stray scan mark?] -1 dac addr ad1: jms getsc; tal ad2: jms betwen; d47; d58 " digit? skp jmp numb sad o40 "[o40 circled in scan] " space? jmp ad1 "[hand drawn check mark follows operand in scan] sad o11 " tab? jmp ad1 "[hand drawn check mark follows operand in scan] "[check mark underlined in scan] sad o55 " -? jmp amin "[hand drawn check mark follows operand in scan] sad o56 " .? jmp adot "[hand drawn check mark follows operand in scan] sad o53 " +? jmp ad1 "[hand drawn check mark follows operand in scan] sad o44 " $? jmp adol "[hand drawn check mark follows operand in scan] sad o57 " /? jmp fsrch "[hand drawn check mark follows operand in scan] sad o77 " '?'? jmp bsrch "[hand drawn check mark follows operand in scan] dac char lac minflg sza jmp error lac addr sma isz addres jmp i addres "** 08-rest.pdf page 14 "[handwritten page number top right of scan - 7] adot: lac minflg sza jmp error lac addr sma jmp error lac dot dac addr jmp ad1 adol: lac minflg sza jmp error lac addr sma jmp error -1 tad eofp dac addr jmp ad1 amin: -1 dac minflg jmp ad1 numb: dac char sad o60 " leading zero? jmp 1f " yes: octal lac d10 " no: decimal jmp 2f 1: lac d8 " here for octal 2: dac 2f " save radix for mul dzm num 1: lac num cll; mul; 2: 0 " multiply by radix lacq tad char " add digit tad dm48 " subtract ASCII zero dac num " save jms getsc; tal " get another char dac char " save jms betwen; d47; d58 " a digit? skp " no: done jmp 1b " yes: process lac minflg " minus flag sna " set? jmp 1f " no -1 " yes: negate tad num cma dac num dzm minflg " clear minus flag 1: lac addr "** 08-rest.pdf page 15 "[handwritten page number top right of scan - 8] spa lac zerop tad num dac addr jms betwen; zermp; eofp jmp error lac char jmp ad2 number: 0 " format "num" in decimal to "tbuf" lac d100000 dac n1 law tbuf-1 dac 8 n0: lac num cll; idiv; n1: 0 dac num lacq tad d48 dac i 8 lac n1 cll; idiv; 10 lacq dac n1 sza jmp n0 lac o12 dac i 8 law tbuf-1 dac 8 dac 9 -5 dac n1 n2: lac i 8 sad d48 skp jmp n3 dzm i 9 isz n1 jmp n2 n3: lac d1 sys write; tbuf; 7 jmp i number rname: 0 lac fbufp dac tal1 -8 dac c1 1: jms getsc; tal sad o40 jmp 1b sad o12 jmp 1f jms putsc; tal1 isz c1 jmp 1b "** 08-rest.pdf page 16 "[handwritten page number top right of scan - 9] jmp i rname 1: lac tal1 sad fbufp skp jmp 1f lac fbuf sna jmp error jmp i rname 1: lac o40 jms putsc; tal1 isz c1 jmp 1b jmp i rname gline: 0 dac glint1 jms getdsk lac glint1 " [these 6 lines were surrounded by a box and o1777 " that was Xed out with an arrow pointing to it]: tad dskbfp " -- dac ital "|\/| lac linep "|/\|<--- dac otal " -- 1: lac ital sad edskbfp skp jmp 2f lac diskin tad d1024 jms getdsk lac dskbfp dac ital 2: jms getsc; ital jms putsc; otal sad o12 skp jmp 1b lac otal sma jmp 1f cla jms putsc; otal 1: lac linpm1 cma tad otal jmp i gline rline: 0 " read line from stdin lac linep dac tal 1: cla sys read; char; 1 " read a char (or two) lac char "** 08-rest.pdf page 17 "[handwritten page number top right of scan - 10] lrss 9 jms esc " process high char lac char and o777 jms esc " process low char jmp 1b esc: 0 " edit/save char sna jmp i esc " skip NUL jms putsc; tal sad o12 " newline? jmp 2f sad o100 " @ (kill)? jmp 1f sad o43 " # (erase)? skp jmp i esc -1 " erase tad tal " decrement pointer dac tal and o17777 " mask to addr sad linpm1 " before start? jmp 1f " yes: reset jmp i esc 1: " saw @ (kill) reset pointer lac linep dac tal jmp i esc 2: " here with newline lac tal sma cla jmp 1f jms putsc; tal 1: -1 tad linep cma tad tal dac linsiz jmp i rline " return from rline getsc: 0 " call: jms getsc; pbufp lac i getsc " fetch buffer pointer addr from after call dac sctalp isz getsc " skip buffer pointer pointer lac i sctalp " fetch buffer pointer dac sctal add o400000 " flip high bit (carry wraps around) dac i sctalp " save pointer back ral " shift high bit into link lac i sctal " fetch word from buffer szl " link set? lrss 9 " yes: shift high char down and o777 " mask to character jmp i getsc putsc: 0 " call: jms putsc; pbufp and o777 " mask to single 9-bit character "** 08-rest.pdf page 18 "[handwritten page number top right of scan - 11] lmq " put in MQ lac i putsc " fetch buffer pointer pointer dac sctalp isz putsc " skip over pointer pointer lac i sctalp " get pointer dac sctal " save it for later add o400000 " flip high bit, wrap carry dac i sctalp " save back as buffer pointer pointer sma cla " high bit set? jmp 1f " no llss 27 " yes: get MQ in high half of AC dac i sctal " save to buffer lrss 9 " shift char back down jmp i putsc " return 1: lac i sctal " get word from buffer and o777000 " mask to high character omq " OR in new char dac i sctal " save word lacq " restore char jmp i putsc " return append: 0 -1 tad eofp dac 8 cma tad dot dac apt1 1: lac i 8 dac i 8 -3 tad 8 dac 8 isz apt1 jmp 1b isz eofp dzm i eofp isz dot jms addline jmp i append addline: 0 lac dskadr dac i dot jms getdsk "[line crossed out - scan markup] -1 tad linsiz cma dac apt1 law line-1 dac 8 lac dskadr "[line crossed out - scan markup] and o1777 "[line crossed out - scan markup] tad dskbfp "[line crossed out - scan markup] dac otal "[line crossed out - scan markup] lac dskadr "[line crossed out - scan markup] tad linsiz "[line crossed out - scan markup] dac dskadr "[line crossed out - scan markup] "** 08-rest.pdf page 19 "[handwritten page number top right of scan - 12] 1: lac otal " [these 9 lines were surrounded by a box sad edskbfp " that was Xed out]: skp " -- jmp 2f "|\/| lac diskin "|/\| tad d1024 " -- jms getdsk " lac dskbfp " dac otal " 2: "[line crossed out - scan markup] lac i 8 dac i otal "[line crossed out and a note that looks like *jms prtwrd*] isz otal dzm wrflg "[line crossed out - scan markup] isz apt1 jmp 1b jmp i addline getdsk: 0 "[the entire getdsk procedure was surrounded and o776000 " by a box that was Xed out]: sad diskin " -- jmp i getdsk "|\/| dac 2f "|/\| lac wrflg " -- sza " jmp 3f " lac diskin " dac 1f " lac sfo " sys seek; 1: 0; 0 " lac sfo " sys write; dskbuf; 1024 " lac d1 " dac wrflg " 3: " lac 2f " dac diskin " lac sfi " sys seek; 2: 0; 0 " spa " jmp i getdsk " lac sfi " sys read; dskbuf; 1024 " jmp i getdsk " betwen: 0 dac bett1 lac i betwen dac bett2 isz betwen lac i bett2 cma tad bett1 spa jmp 1f lac i betwen dac bett2 isz betwen -1 tad i bett2 "** 08-rest.pdf page 20 "[handwritten page number top right of scan - 13] cma tad bett1 spa 1: isz betwen lac bett1 jmp i betwen error: lac d1 sys write; 1f; 1 jmp advanc 1: 077012