/ getty -- get name and tty mode / for initialization / cycle through speeds and "login:" messages / summarized in itab stty = 31. gtty = 32. sys signal; 3; 1 sys signal; 2; 1 clr r0 sys gtty; imode mov imode+4,r0 bic $!26,r0 mov r0,flags / use xtab,cr,ucase from driver jsr r5,nextspeed 1: mov $name,r5 2: jsr r5,getc cmp r0,$'\n beq 1f cmp r0,$'\r beq 4f cmpb r0,imode+3 beq 1b cmpb r0,imode+2 bne 3f cmp r5,$name blos 2b dec r5 br 2b 3: cmp r5,$name+30. bhis 2b movb r0,(r5)+ br 2b 4: bis $20,flags /cr bit mov $'\n,r0 jsr pc,putc br 2f 1: mov $'\r,r0 jsr pc,putc 2: clrb (r5)+ / determine whether terminal is upper-case only mov $name,r5 1: movb (r5)+,r0 beq 1f cmp r0,$'A blo 2f cmp r0,$'Z bhi 2f bis $4,flags 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: mov fstate,r4 mov imode+2,2(r4) bis flags,4(r4) clr r0 sys 0; 9f .data 9: sys stty; fstate: .. .text go: sys exec; login; loginp sys exit getc: clr r0 sys read; ch; 1 bes done tst r0 beq done bic $!177,ch mov ch,r2 beq 1f getc1: cmp r2,$174 bhis 3f mov $1,r0 movb ch,r0 jsr pc,putc 3: mov r2,r0 rts r5 1: mov $name,(sp) jsr r5,nextspeed 2: clr r0 / flush nulls sys read; ch; 1 bes done 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 0; 9f .data 9: sys stty; 0:.. .text bes go mov (r1)+,-(sp) mov (r1)+,fstate mov r1,itabp mov (sp)+,r1 1: movb (r1)+,r0 beq 1f jsr pc,putc br 1b 1: rts r5 putc: bic $!177,r0 movb r0,ch mov $1,r0 sys write; ch; 1 rts pc loginp: login name 0 itab: itn300; tnmes; tn300 itty37; ttymes; tty37 0 .data itabp: itab itty37: .byte 5, 5 0; 340 / any parity, raw tty37: .byte 5, 5 0; 210 / 37 parity, echo itn300: .byte 7, 7 0; 340 / any parity, raw, cr tn300: .byte 7, 7 0; 10310 / any parity, echo, no tab del ttymes: <\n\r\p:\alogin: \0> tnmes: <\n\r\p;login: \0> login: </bin/login\0> .even nl: <\n> cr: <\r> .bss flags: .=.+2 ch: .=.+2 imode: .=.+6 name: .=.+32.