" s4 alloc: 0 -1 tad s.nfblks spa jmp 1f dac s.nfblks tad fblksp jms laci dac 9f+t jms copyz; dskbuf; 64 lac 9f+t jms dskwr dzm .savblk lac 9f+t jmp alloc i 1: lac s.nxfblk sna jms halt " OUT OF DISK dac s.fblks jms dskrd lac dskbuf dac s.nxfblk jms copy; dskbuf+1; s.fblks+1; 9 lac d10 dac s.nfblks jmp alloc+1 free: 0 lmq lac s.nfblks sad d10 jmp 1f tad fblksp dac 9f+t lacq dac 9f+t i dzm .savblk isz s.nfblks jmp free i 1: lac s.nxfblk dac dskbuf jms copy; s.fblks+1; dskbuf+1; 9 lacq dac s.nxfblk jms dskwr dzm .savblk lac d1 dac s.nfblks jmp free i t = t+1 laci: 0 and o17777 tad o200000 dac .+1 lac .. jmp laci i betwen: 0 lmq cmq lac betwen i dac 9f+t isz betwen lacq tad 9f+t i sma jmp 1f lac betwen i dac 9f+t isz betwen lacq tad 9f+t i cma spa sna 1: isz betwen lacq cma jmp betwen i copy: 0 -1 tad copy i dac 8 isz copy -1 tad copy i dac 9 isz copy -1 tad copy i cma dac 9f+t isz copy 1: lac 8 i dac 9 i isz 9f+t jmp 1b jmp copy i copyz: 0 -1 tad copyz i dac 8 isz copyz -1 tad copyz i cma dac 9f+t isz copyz 1: dzm 8 i isz 9f+t jmp 1b jmp copyz i t = t+1 putchar: 0 dac 9f+t cla jms takeq jmp putchar i tad o40001 dac .+4 lac 9f+t jms putq lac char dac q2+1 .. isz putchar jmp putchar i t = t+1 getchar: 0 jms takeq jmp i getchar tad o200001 dac .+3 cla jms putq lac q2+1 .. isz getchar jmp i getchar takeq: 0 rcl tad lacq1 dac .+7 tad o640000 dac .+17 tad d1 dac .+14 tad o500000 dac .+5 lac q1 .. sna jmp takeq i dac lnkaddr sad q1+1 .. jmp .+5 tad o200000 dac .+1 lac q2 .. jmp .+3 cla dac q1+1 .. dac q1 .. isz takeq lac lnkaddr jmp i takeq putq: 0 rcl tad dacq1 dac .+14 tad d1 dac .+13 tad o140000 dac .+1 lac q1-1 .. sna jmp .+6 tad o40000 dac .+2 lac lnkaddr dac q2 .. jmp .+3 lac lnkaddr dac q1 .. dac q1+1 .. jmp putq i srcdbs: 0 dac 9f+t+2 "* lmq -ndskbs dac 9f+t law dskbs "* -1 dac 8 written dac 9f+t+1 "* lacq 1: jmp srcdbs i isz 9f+t+1 isz 9f+t jmp 1b isz srcdbs jmp srcdbs i collapse: 0 cla jms srcdbs jmp 1f law dskbs 1: dac 0f+1 dac 0f cma tad d1 tad edskbsp and o17777 sna jmp 0f+3 dac 0f+2 jms copy; 0:..; ..; .. -65 tad edskbsp dac 9f+t tad d1 dac 0f lac dskaddr dac 9f+t i jms copy; dskbuf; 0:..; 64 jmp collapse i dskrd: 0 jms betwen; d2; d7999 jms halt sad dskaddr jmp dskrd i dac dskaddr jms srcdbs jmp 1f lac dskaddr jms dskio; 06000 jmp 2f 1: dzm 9f+t+1 i law 1 tad 9f+t+1 dac .+2 jms copy; ..; dskbuf; 64 2: jms collapse jmp dskrd i dskwr: 0 jms betwen; d2; d7999 jms halt jms dskio; 07000 lac dskaddr jms srcdbs dzm 9f+t+1 i jms collapse jmp dskwr i t = t+3 dskio: 0 dac dskaddr cll; idiv; 80 dac 9f+t lacq idiv; 10 dac 9f+t+1 lls 22 xor 9f+t+1 als 8 dac 9f+t+1 lac 9f+t idiv; 10 dac 9f+t lls 22 xor 9f+t xor 9f+t+1 xor o200000 dac 9f+t jms dsktrans; -64; dskbuf; 9f+t; dskio isz dskio jmp dskio i t = t+1 dsktrans: 0 -10 dac 9f+t 1: -1 tad dsktrans dac 12 dscs lac 12 i dslw lac 12 i dslm lac 12 i jms laci dsld dzm .dskb lac 12 i jms laci jms laci dsls lac .dskb sna jmp .-2 lac .dske sma jmp 12 i isz 9f+t jmp 1b jms halt " 10 disk errors t = t+1 halt: 0 isz 9f+t jmp .-1 iof hlt jms copy; law; 4096; 4096 hlt; jmp .-1 t = t+1