/ getty -- get name and tty mode / for initialization / cycle through speeds and "login:" messages / summarized in itab stty = 31. sys quit; 0 sys intr; 0 0: jsr r5,nextspeed 1: mov $name,r5 2: jsr r5,getc cmp r0,$174 beq 5f cmp r0,$176 beq 5f cmp r0,$'\n beq 1f cmp r0,$'\r beq 4f cmp r0,$'@ beq 1b cmp r0,$'# bne 3f cmp r5,$name blos 2b dec r5 br 2b 3: movb r0,(r5)+ br 2b 4: bis $20,flags /cr bit mov $1,r0 sys write; nl; 1 br 2f 5: mov $tab2741,itabp inc nowr br 0b 1: mov $1,r0 sys write; cr; 1 2: clrb (r5)+ / determine whether terminal is upper-case only cmp r5,$name+1 bhi 1f bic $4,flags /no data-assume lc 1: mov $name,r5 1: movb (r5)+,r0 beq 1f cmp r0,$'A blo 2f cmp r0,$'Z bhi 2f add $40,r0 / map to lc movb r0,-1(r5) br 1b 2: cmp r0,$'a blo 1b cmp r0,$'z bhi 1b bic $4,flags br 1b 1: clr r0 mov fstate,r4 bis flags,4(r4) sys stty; fstate: .. go: sys exec; login; loginp sys exit getc: clr r0 sys read; ch; 1 tst r0 beq done mov ch,r2 beq 1f getc1: cmp r2,$174 bhis 3f tst nowr bne 3f mov $1,r0 sys write; ch; 1 3: mov r2,r0 rts r5 1: dec $0 / wait a while bne 1b mov $name,(sp) jsr r5,nextspeed 2: clr r0 / flush nulls sys read; ch; 1 tst r0 beq done movb ch,r2 beq 2b br getc1 done: sys exit nextspeed: mov itabp,r1 mov (r1)+,0f bne 1f mov $itab,itabp br nextspeed 1: clr r0 sys stty; 0:.. bes go mov (r1)+,-(sp) mov (r1)+,fstate mov r1,itabp mov (sp)+,r1 1: movb (r1)+,ch beq 1f mov $1,r0 sys write; ch; 1 br 1b 1: rts r5 itabp: itab loginp: login name 0 itab: itty37; ttymes; tty37 itn300; tnmes; tn300 tab2741: i2741; m2741; f2741 0 itty37: 511; 511; 340 / any parity, raw, 150 baud tty37: 511; 511; 210 / 37 parity, echo, 150 baud itn300: 521; 521; 340 / any parity, raw, cr, 300 baud tn300: 521; 521; 310 / any parity, echo, 300 baud i2741: 1501; 501; 100540 /134 bits, 2741, raw, first time f2741: 1501; 501; 500 /134 bps, 2741 0 m2741: <\nlogin: \0> ttymes: <\n\r\p:\alogin: \0> tnmes: <\n\r\p;login: \0> login: </bin/login\0> .even nl: <\n> cr: <\r> flags: 004 / upper case map .bss ch: .=.+2 nowr: .=.+2 name: .=.+32.