; -*- Midas -*- title MODEMS - Initialize Hairy Modems ; Here in the future, modems are smarter than we are. a=:1 b=:2 c=:3 d=:4 e=:5 t=:6 tt=:7 chttyo=:10 slose=:.lose %lssys quit=:.logout 1, tyo=:.iot chttyo, define syscall name,args .call [setz ? sixbit /name/ ? args(400000)] termin go: syscall sstatu,[repeat 6,[ ? movem a]] slose movsi b,-lmchtab came a,mchtab(b) aobjn b,.-1 jumpge b,done move a,tabtab(b) loop: hlrz b,(a) syscall ttyvar,[movei 400000(b) ? [sixbit /TTYTYP/] ? movem c] slose trnn c,%tydil jrst next idivi b,10 hrlzi c,'T00(c) lsh b,24. add b,c syscall open,[[.uao\%tjsio,,chttyo] ? b] jrst next syscall ttyget,[movei chttyo ? movem b ? movem b ? movem b] slose tlne b,%tscns jrst next ; Don't diddle our own console! .reset chttyo, syscall ttyset,[movei chttyo [<010101,,010101>*%tgact] [<010101,,010101>*%tgact]] slose hrrz b,(a) hrli b,440700 jrst outlp1 ; Each character is output preceeded by a 1/3 second pause. ; Except ^P just causes a 2 second pause. ; Except ^Q outputs the next character immediately. outlpq: ildb c,b outlp: tyo c outlp1: ildb c,b cain c,^Q jrst outlpq cain c,^P jrst [ MOVEI T,60. ? .SLEEP T, ? JRST OUTLP1 ] ; 2 secs movei t,10. ; 1/3 sec .sleep t, jumpn c,outlp .close chttyo, next: aobjn a,loop done: quit mchtab: sixbit /AI/ sixbit /MC/ lmchtab==:.-mchtab tabtab: -laitab,,aitab -lmctab,,mctab ifn <.-tabtab>-lmchtab, .err TABTAB wrong size ; On AI, T03 and T04 are connected to shitty maxel modems. aitab: 3,,maxel 4,,maxel laitab==:.-aitab ; On MC, T01 and T02 are connected to shitty maxel modems. mctab: 1,,maxel 2,,maxel lmctab==:.-mctab maxel: asciz "+++îîîîîIîATZîATS0=1S2=26E0Q1î" cnstnts: constants variables end go