Research PDP7 development
[unix-history] / adm.s
diff --git a/adm.s b/adm.s
new file mode 100644 (file)
index 0000000..c78e67b
--- /dev/null
+++ b/adm.s
@@ -0,0 +1,586 @@
+" adm
+
+   lac 017777 i
+   sad d4
+   jmp nofiles
+   lac 017777
+   tad d1
+   dac name
+   jms connect
+   sys time
+   llss 9
+   ecla lls 3
+   tad o60
+   alss 9
+   dac snumb
+   ecla llss 3
+   tad o60
+   alss 9
+   dac snumb+1
+   ecla llss 3
+   tad o60
+   alss 9
+   dac snumb+2
+   lac d1
+   sys write; snumb; 3
+   lac d1
+   sys write; o12; 1
+   jms gcard; <$;<*;<$;<7;<c;0
+   jms gcard; <$;<*;<$;<r;<c;<d;0
+   jms gcard; <$;<%;6;<s;<n;<u;<m;<b;<%;3;<7;<c
+snumb:
+      <x;<x;<x;<,;<3;<1;0
+   jms gcard; <$;<%;6;<i;<d;<e;<n;<t;<%;3;<m;<0;<1;<3;<0;<,
+      <m;<3;<2;<2;<,;<k;<e;<n;0
+   jms gcard; <$;<%;6;<s;<e;<l;<e;<c;<t;<%;2;<k;<e;<n
+      </;<d;<m;<p;<o;<f;<f;0
+   jms gcard; <$;<%;6;<l;<i;<m;<i;<t;<s;<%;2;<3;<,;<,;<,
+      <9;<0;<0;<0;<0
+   jms gcard; <$;<%;6;<d;<a;<t;<a;<%;4;<i;<*;<,
+      <n;<c;<k;<s;<u;<m;<,
+        <c;<o;<p;<y;0
+   jmp floop1
+
+floop:
+   lac fi
+   sys close
+floop1:
+   lac 017777 i
+   sad d4
+   jmp done
+   tad dm4
+   dac 017777 i
+   lac name
+   tad d4
+   dac name
+
+   sys open; name: ..; 0
+   spa
+   jmp ferror
+   dac fi
+
+   -1
+   tad name
+   dac 8
+   r4
+   dac c1
+1:
+   lac 8 i
+   jms putw
+   isz c1
+   jmp 1b
+   jms gcard; 0
+   jms flush
+
+   lac o200500 " first card, 7/9
+   dac buf
+   dzm buf+1 " seq
+
+cloop:
+   dzm buf+2 " word count
+   dzm buf+3 " checksum
+   law buf+3
+   dac 10
+   -44
+   dac c1
+
+wloop:
+   jms getword
+      jmp eof
+   dac 10 i
+   add buf+3
+   dac buf+3 " check sum
+   isz buf+2 " word count
+   isz c1
+   jmp wloop
+
+   lac buf+3
+   add buf
+   add buf+1
+   add buf+2
+   dac buf+3 " ffinal check sum
+   jms putcard
+   lac buf
+   and o577777 " not first card
+   dac buf
+   isz buf+1 " sequence
+   jmp cloop
+
+eof:
+   dzm 10 i
+   isz c1
+   jmp eof
+
+   lac buf
+   xor o400000
+   dac buf " last card
+   lac buf+3
+   add buf
+   add buf+1
+   add buf+2
+   dac buf+3 " final check sum
+   jms putcard
+   jmp floop
+
+getword: 0
+   lac ipt
+   sad eipt
+   jmp 1f
+   lac ipt i
+   isz ipt
+   isz getword
+   jmp getword i
+1:
+   lac fi
+   sys read; ibuf; 64
+   sna
+   jmp getword i
+   tad iipt
+   dac eipt
+   lac iipt
+   dac ipt
+   jmp getword+1
+ipt: 0
+eipt: 0
+iipt: ibuf
+
+putcard: 0
+   -48
+   dac c1
+   law buf-1
+   dac 10
+1:
+   lac 10 i
+   lmq
+   -3
+   dac c2
+2:
+   ecla llss 6
+   tad lactab
+   dac .+1
+   lac ..
+   dac opt i
+   isz opt
+   isz c2
+   jmp 2b
+   isz c1
+   jmp 1b
+
+   -16
+   dac c1
+   cla
+1:
+   dac opt i
+   isz opt
+   isz c1
+   jmp 1b
+   law 0144
+   jms message; tbuf
+   law tbuf
+   dac opt
+   jmp putcard i
+
+   jmp floop
+
+ferror:
+   lac name
+   dac 1f
+   lac d1
+   sys write; 1:..; 4
+   lac d1
+   sys write; 1f; 1
+   jmp floop1
+1: 077012
+
+hangup:
+   lac d1
+   sys write; m1; m1s
+   jmp stop
+
+abort:
+   lac d1
+   sys write; m2; m2s
+   jmp stop
+
+nofiles:
+   lac d1
+   sys write; m3; m3s
+   sys exit
+
+discon:
+   lac d1
+   sys write; m4; m4s
+   jmp stop
+
+m1:
+   <ha>;<ng>;<up>;012
+m2s = .-m1
+m2:
+   <ab>;<or>;<te>;<d 012
+m2s = .-m2
+m3:
+   <us>;<ag>;<e;<:;040;<ad>;<m 040; <fi>;<le>;<s 012
+   <di>;<al>;040;<x;<5;<3;<8;<0 040; <on>;040;<th>;<e 040
+   <da>;<ta>;<ph>;<on>;<e 012
+m3s = .-m3
+m4:
+   <di>;<sc>;<on>;<ne>;<ct>;<ed>;012
+m4s = .-m4
+
+stop:
+   dpof
+   las
+   and o400000
+   sna
+   sys save
+   sys exit
+
+carrier: 0100000
+ilock: 040000
+totime: 300
+disflg: 0
+
+flush: 0
+   lac noc
+   sna
+   jmp flush i
+   law 0104
+   jms message; tbuf
+   law tbuf
+   dac opt
+   dzm noc
+   jmp flush i
+
+gcard: 0
+   lac gcard i
+   isz gcard
+   sna
+   jmp 3f
+   lrss 9
+   sad o45
+   jmp 1f
+   jms putc
+   jmp gcard+1
+1:
+   -1
+   tad gcard i
+   cma
+   dac 2f
+   isz gcard
+1:
+   law 040
+   jms putc
+   isz 2f
+   jmp 1b
+   jmp gcard+1
+2: 0
+3:
+   lac noc
+   sna
+   jmp gcard i
+   sad d80
+   jmp gcard i
+   law 040
+   jms putc
+   jmp 3b
+
+done:
+   jms gcard; <$;<%;6;<e;<n;<d;<c;<o;<p;<y;0
+   jms gcard; <$;<%;6;<s;<y;<s;<o;<u;<t;<%;2;<p;<*;0
+   jms gcard; <$;<%;6;<e;<n;<d;<j;<o;<b;0
+   -1
+   dac disflg
+1:
+   jms gcard; <$;<*;<$;<d;<i;<s;0
+   jmp 1b
+
+putw: 0
+   dac 1f
+   lrss 9
+   jms putc
+   lac 1f
+   jms putc
+   jmp putw i
+1: 0
+
+putc: 0
+   and o177
+   dac opt i
+   -0141
+   tad opt i
+   spa
+   jmp 1f
+   -0173
+   tad opt i
+   sma
+   jmp 1f
+   -040
+   tad opt i
+   dac opt i
+1:
+   isz opt
+   isz noc
+   lac noc
+   sad d160
+   skp
+   jmp putc i
+   dzm noc
+   law tbuf
+   dac opt
+   law 0110
+   jms message; tbuf
+   jmp putc i
+noc: 0
+opt: tbuf
+
+connect: 0
+   dpon
+   dpop
+
+   law 4
+   sys sysloc
+   tad d14
+   dac systime
+   law 11
+   sys sysloc
+   dac dpstat
+   tad d1
+   dac dpread
+   tad d1
+   dac dpwrite
+   tad d1
+   dac dpchar
+
+   dzm dpstat i
+   las
+   dac opch
+1:
+   las
+   sad opch
+   skp
+   jmp abort
+   sys time
+   lac dpstat i
+   and ilock
+   sna
+   jmp 1b
+   law 041
+   dac echoch
+   law 0102
+   jms message; 0
+   jmp i connect
+
+message: 0
+   dac stsch
+
+retry:
+   lac dpstat i
+   and carrier
+   sza
+   jmp retry
+   dprs
+   and ilock
+   sna
+   jmp hangup
+   lac d1
+   dac dpwrite i
+   sys time
+   lacq
+   tad totime
+   dac rctim
+
+" put out 6 sync characters
+   -6
+   dac c2
+1:
+   law 026
+   jms transch
+   isz c2
+   jmp 1b
+
+" put out stx character
+   law 002
+   jms transch
+   dzm sum
+
+" put out the status character
+   lac stsch
+   jms transch
+
+" echo the sequence character
+   lac echoch
+   jms transch
+
+" if there is a buffer pointer
+" put out 160 words of data
+   -1
+   tad i message
+   spa
+   jmp 2f
+   dac 10
+   -160
+   dac c2
+1:
+   lac 10 i
+   jms transch
+   isz c2
+   jmp 1b
+
+" put out etx character
+2:
+   law 003
+   jms transch
+
+" put out lateral parity
+   lac sum
+   jms transch
+
+" put out a sync
+   law 026
+   jms transch
+
+" loop looking for stx
+1:
+   jms recvch
+   sad o2
+   skp
+   jmp 1b
+   dzm sum
+
+" pick up op code
+   jms recvch
+   spa
+   jmp error
+   dac opch
+
+" pick up sequence character
+   jms recvch
+   spa
+   jmp error
+   dac seqch
+   sad echoch
+   jmp error
+
+" skip over data block to etx character
+1:
+   jms recvch
+   spa
+   jmp error
+   sad o3
+   skp
+   jmp 1b
+
+" pick up the lateral parity character
+   jms recvch
+   lac sum
+   and o177
+   sza
+   jmp error
+
+" and exit
+   lac seqch
+   dac echoch
+   -1
+   dac 7
+   isz message
+   lac opch
+   sad o122
+   jmp i message
+   lac distlg
+   sna
+   jmp discon
+   jmp stop
+
+transch: 0
+   lmq
+   xor sum
+   dac sum
+1:
+   jms checktim
+   lac dpwrite i
+   sna
+   jmp 1b
+   dzm dpwrite i
+   lacq
+   dpwc
+   jmp i transch
+
+recvch: 0
+1:
+   jms checktim
+   lac dpread i
+   sna
+   jmp 1b
+   dzm dpread i
+   lac dpchar i
+   xor sum
+   dac sum
+   lac dpchar i
+   jmp i recvch
+
+checktim: 0
+   lac systime i
+   cma
+   tad rctim
+   spa
+   jmp error
+   jmp i checktim
+
+error:
+   lac stsch
+   lmq
+   lac o2
+   omq
+   dac stsch
+   jmp retry
+
+d1: 1
+d4: 4
+o60: 060
+o12: 012
+dm4: -4
+o45: 045
+o177: 0177
+d160: 160
+d80: 80
+d14: 14
+o400000: 0400000
+o577777: 0577777
+o200500: 0200500
+o122: 0122
+o3: 3
+o2: 2
+
+lactab: lac .+1
+   0060;0061;0062;0063;0064;0065;0066;0067
+   0070;0071;0133;0043;0100;0072;0076;0077
+   0040;0101;0102;0103;0104;0105;0106;0107
+   0110;0111;0046;0056;0135;0050;0074;0134
+   0136;0112;0113;0114;0115;0116;0117;0120
+   0121;0122;0055;0044;0052;0051;0073;0047
+   0053;0057;0123;0124;0125;0126;0127;0130
+   0131;0132;0137;0054;0045;0075;0042;0041
+
+dpstat: .=.+1
+dpread: .=.+1
+dpwrite: .=.+1
+dpchar: .=.+1
+systime: .=.+1
+opch: .=.+1
+stsch: .=.+1
+echoch: .=.+1
+seqch: .=.+1
+tbuf: .=.+160
+buf: .=.+48
+ibuf: .=.+64
+rctim: .=.+1
+fi: .=.+1
+c1: .=.+1
+c2: .=.+1
+sum: .=.+1
+
+dpon = 0704701
+dpof = 0704704
+dpwc = 0704722
+dpop = 0704764
+dprs = 0704752
\ No newline at end of file