     1                                  ; ****************************************************************************
     2                                  ; getty386.s (getty3.s) - Retro Unix 386 v1.2 - /etc/getty
     3                                  ; ----------------------------------------------------------------------------
     4                                  ; RETRO UNIX 386 (Retro Unix == Turkish Rational Unix)
     5                                  ; Operating System Project (v0.2) by ERDOGAN TAN (Beginning: 24/12/2013)
     6                                  ;
     7                                  ; [ Last Modification: 18/02/2022 ]
     8                                  ;
     9                                  ; Derived from 'getty07.asm' source code file of 'Retro UNIX 8086 v1'
    10                                  ; operating system project, /etc/getty source code by Erdogan Tan
    11                                  ; (06/11/2013-22/05/2014)
    12                                  ;
    13                                  ; Derived from 'getty.s' file of original UNIX operating system
    14                                  ; (v1.0 for PDP-11)
    15                                  ; ****************************************************************************
    16                                  
    17                                  ; getty3.s (05/02/2022, Retro UNIX 386 v1 & v1.1 & v1.2)
    18                                  ; getty2.s (17/11/2015, Retro UNIX 386 v1 & v1.1)
    19                                  ; getty1.s (11/11/2015, Retro UNIX 386 v1)
    20                                  ; getty0.s (13/10/2015, Retro UNIX 386 v1, NASM 2.11, 32 bit version)
    21                                  ; GETTY07.ASM, 06/11/2013 - 22/05/2014 (Retro UNIX 8086 v1, MASM 6.11) 
    22                                  
    23                                  ; 12/01/2022 (Retro UNIX 386 v1.2)
    24                                  ; 13/10/2015
    25                                  
    26                                  ; Assembler: NASM 2.11
    27                                  ; UNIX v1 system calls
    28                                  _rele 	equ 0
    29                                  _exit 	equ 1
    30                                  _fork 	equ 2
    31                                  _read 	equ 3
    32                                  _write	equ 4
    33                                  _open	equ 5
    34                                  _close 	equ 6
    35                                  _wait 	equ 7
    36                                  _creat 	equ 8
    37                                  _link 	equ 9
    38                                  _unlink	equ 10
    39                                  _exec	equ 11
    40                                  _chdir	equ 12
    41                                  _time 	equ 13
    42                                  _mkdir 	equ 14
    43                                  _chmod	equ 15
    44                                  _chown	equ 16
    45                                  _break	equ 17
    46                                  _stat	equ 18
    47                                  _seek	equ 19
    48                                  _tell 	equ 20
    49                                  _mount	equ 21
    50                                  _umount	equ 22
    51                                  _setuid	equ 23
    52                                  _getuid	equ 24
    53                                  _stime	equ 25
    54                                  _quit	equ 26	
    55                                  _intr	equ 27
    56                                  _fstat	equ 28
    57                                  _emt 	equ 29
    58                                  _mdate 	equ 30
    59                                  _stty 	equ 31
    60                                  _gtty	equ 32
    61                                  _ilgins	equ 33
    62                                  _sleep	equ 34 ; Retro UNIX 8086 v1 feature only !
    63                                  _msg    equ 35 ; Retro UNIX 386 v1 feature only !
    64                                  _sleep	equ 34 ; Retro UNIX 8086 v1 feature only !
    65                                  _msg	equ 35 ; Retro UNIX 386 v1 feature only !
    66                                  _geterr	equ 36 ; Retro UNIX 386 v1 feature only !
    67                                  ; 12/01/2022 - Retro UNIX 386 v1.2
    68                                  ; Retro UNIX 386 v2 system calls
    69                                  _setgid	equ 37
    70                                  _getgid	equ 38
    71                                  _sysver	equ 39 ; (get) Retro Unix 386 version
    72                                  
    73                                  ;;;
    74                                  ENTERKEY  equ 0Dh
    75                                  NEXTLINE  equ 0Ah
    76                                  BACKSPACE equ 08h
    77                                  ; 22/05/2014
    78                                  EOT	equ 04h ; 'End Of Transfer' for serial ports	
    79                                  
    80                                  %macro sys 1-4
    81                                      ; Retro UNIX 386 v1 system call.		
    82                                      %if %0 >= 2   
    83                                          mov ebx, %2
    84                                          %if %0 >= 3    
    85                                              mov ecx, %3
    86                                              %if %0 = 4
    87                                                 mov edx, %4   
    88                                              %endif
    89                                          %endif
    90                                      %endif
    91                                      mov eax, %1
    92                                      int 30h	   
    93                                  %endmacro
    94                                  
    95                                  ; Retro UNIX 386 v1 system call format:
    96                                  ; sys systemcall (eax) <arg1 (ebx)>, <arg2 (ecx)>, <arg3 (edx)>
    97                                  
    98                                  [BITS 32] ; We need 32-bit intructions for protected mode
    99                                  
   100                                  [ORG 0] 
   101                                  
   102                                  START_CODE:
   103                                  
   104                                  	sys _quit, 0
    81                              <1> 
    82                              <1>  %if %0 >= 2
    83 00000000 BB00000000          <1>  mov ebx, %2
    84                              <1>  %if %0 >= 3
    85                              <1>  mov ecx, %3
    86                              <1>  %if %0 = 4
    87                              <1>  mov edx, %4
    88                              <1>  %endif
    89                              <1>  %endif
    90                              <1>  %endif
    91 00000005 B81A000000          <1>  mov eax, %1
    92 0000000A CD30                <1>  int 30h
   105                                  	sys _intr, 0
    81                              <1> 
    82                              <1>  %if %0 >= 2
    83 0000000C BB00000000          <1>  mov ebx, %2
    84                              <1>  %if %0 >= 3
    85                              <1>  mov ecx, %3
    86                              <1>  %if %0 = 4
    87                              <1>  mov edx, %4
    88                              <1>  %endif
    89                              <1>  %endif
    90                              <1>  %endif
    91 00000011 B81B000000          <1>  mov eax, %1
    92 00000016 CD30                <1>  int 30h
   106                                  
   107                                          sys _gtty, 0, 1  ; get status of console tty (w)
    81                              <1> 
    82                              <1>  %if %0 >= 2
    83 00000018 BB00000000          <1>  mov ebx, %2
    84                              <1>  %if %0 >= 3
    85 0000001D B901000000          <1>  mov ecx, %3
    86                              <1>  %if %0 = 4
    87                              <1>  mov edx, %4
    88                              <1>  %endif
    89                              <1>  %endif
    90                              <1>  %endif
    91 00000022 B820000000          <1>  mov eax, %1
    92 00000027 CD30                <1>  int 30h
   108                                          ;jc  short terminate
   109                                  	; 05/02/2022
   110 00000029 7224                    	jc short dont
   111                                  	;
   112 0000002B A2[75010000]            	mov [console], al
   113 00000030 0430                    	add al, '0'
   114 00000032 A2[9C010000]            	mov [ttynum], al
   115                                  	;	
   116                                  	sys _write, 1, msglogin, ml_size
    81                              <1> 
    82                              <1>  %if %0 >= 2
    83 00000037 BB01000000          <1>  mov ebx, %2
    84                              <1>  %if %0 >= 3
    85 0000003C B9[84010000]        <1>  mov ecx, %3
    86                              <1>  %if %0 = 4
    87 00000041 BA24000000          <1>  mov edx, %4
    88                              <1>  %endif
    89                              <1>  %endif
    90                              <1>  %endif
    91 00000046 B804000000          <1>  mov eax, %1
    92 0000004B CD30                <1>  int 30h
   117                                  	;jc short terminate
   118 0000004D 7305                    	jnc short do
   119                                  dont:	; 05/02/2022
   120 0000004F E999000000              	jmp terminate		
   121                                  do:
   122                                  	;;mov word [cursorpos], 0FF00h
   123                                  	;;mov byte [cposll], 0
   124                                  	;
   125 00000054 803D[75010000]07         	cmp byte [console], 7
   126 0000005B 7727                    	ja  short G0
   127                                  	; 	
   128                                  	sys _gtty, 0, 1  ; get status of console tty (w)	
    81                              <1> 
    82                              <1>  %if %0 >= 2
    83 0000005D BB00000000          <1>  mov ebx, %2
    84                              <1>  %if %0 >= 3
    85 00000062 B901000000          <1>  mov ecx, %3
    86                              <1>  %if %0 = 4
    87                              <1>  mov edx, %4
    88                              <1>  %endif
    89                              <1>  %endif
    90                              <1>  %endif
    91 00000067 B820000000          <1>  mov eax, %1
    92 0000006C CD30                <1>  int 30h
   129                                  	;jc short terminate
   130                                  	; 05/02/2022
   131 0000006E 72DF                    	jc short dont
   132                                  	
   133 00000070 66891D[77010000]        	mov [cursorpos], bx
   134 00000077 881D[76010000]          	mov [cposll], bl
   135 0000007D C605[74010000]07        	mov byte [chr], 07h ; bell/beep
   136                                  G0:
   137                                  	sys _write, 1, chr, 1
    81                              <1> 
    82                              <1>  %if %0 >= 2
    83 00000084 BB01000000          <1>  mov ebx, %2
    84                              <1>  %if %0 >= 3
    85 00000089 B9[74010000]        <1>  mov ecx, %3
    86                              <1>  %if %0 = 4
    87 0000008E BA01000000          <1>  mov edx, %4
    88                              <1>  %endif
    89                              <1>  %endif
    90                              <1>  %endif
    91 00000093 B804000000          <1>  mov eax, %1
    92 00000098 CD30                <1>  int 30h
   138 0000009A 7251                    	jc  short terminate
   139                                  	;
   140 0000009C BF[AA010000]                    mov edi, uname
   141                                  	; 18/02/2022
   142                                  	;mov esi, edi
   143                                  getc:
   144                                  	sys _read, 0, chr, 1
    81                              <1> 
    82                              <1>  %if %0 >= 2
    83 000000A1 BB00000000          <1>  mov ebx, %2
    84                              <1>  %if %0 >= 3
    85 000000A6 B9[74010000]        <1>  mov ecx, %3
    86                              <1>  %if %0 = 4
    87 000000AB BA01000000          <1>  mov edx, %4
    88                              <1>  %endif
    89                              <1>  %endif
    90                              <1>  %endif
    91 000000B0 B803000000          <1>  mov eax, %1
    92 000000B5 CD30                <1>  int 30h
   145 000000B7 7234                    	jc short terminate
   146                                  	;
   147 000000B9 A0[74010000]            	mov al, [chr]
   148                                  
   149 000000BE 3C20                    	cmp al, 20h
   150 000000C0 7235                    	jb  short G2
   151                                  
   152 000000C2 3C7F                    	cmp al, 127
   153 000000C4 7439                    	je  short G3
   154                                  
   155 000000C6 81FF[BA010000]                  cmp edi, uname + 16
   156 000000CC 7340                    	jnb short G4
   157                                  putc:
   158 000000CE AA                      	stosb
   159 000000CF FE05[77010000]          	inc byte [cursorpos]
   160                                  	; 18/02/2022
   161                                  	;cmp esi, edi
   162                                  	;jnb short G1
   163                                  	;mov esi, edi
   164                                  G1:
   165                                  	sys _write, 1, chr, 1
    81                              <1> 
    82                              <1>  %if %0 >= 2
    83 000000D5 BB01000000          <1>  mov ebx, %2
    84                              <1>  %if %0 >= 3
    85 000000DA B9[74010000]        <1>  mov ecx, %3
    86                              <1>  %if %0 = 4
    87 000000DF BA01000000          <1>  mov edx, %4
    88                              <1>  %endif
    89                              <1>  %endif
    90                              <1>  %endif
    91 000000E4 B804000000          <1>  mov eax, %1
    92 000000E9 CD30                <1>  int 30h
   166 000000EB 73B4                    	jnc  short getc
   167                                  
   168                                  	; 05/02/2022
   169                                  terminate:
   170                                          sys _exit
    81                              <1> 
    82                              <1>  %if %0 >= 2
    83                              <1>  mov ebx, %2
    84                              <1>  %if %0 >= 3
    85                              <1>  mov ecx, %3
    86                              <1>  %if %0 = 4
    87                              <1>  mov edx, %4
    88                              <1>  %endif
    89                              <1>  %endif
    90                              <1>  %endif
    91 000000ED B801000000          <1>  mov eax, %1
    92 000000F2 CD30                <1>  int 30h
   171                                  here:	
   172 000000F4 F4                      	hlt
   173 000000F5 EBFD                    	jmp short here
   174                                  
   175                                  G2:
   176 000000F7 3C0D                    	cmp al, ENTERKEY  ; \r (carriage return)
   177 000000F9 744B                            je  short G7
   178                                  
   179                                  	;cmp al, NEXTLINE ; \n (next line)
   180                                          ;je  short G7
   181                                  
   182 000000FB 3C08                    	cmp al, BACKSPACE ; \b (back space)
   183 000000FD 75A2                    	jne short getc
   184                                  G3:
   185                                  	; Backspace
   186 000000FF 668B15[77010000]        	mov dx, [cursorpos]
   187                                  	;
   188 00000106 3A15[76010000]          	cmp dl, [cposll] ; left limit
   189 0000010C 7709                    	ja  short G5
   190                                  G4:
   191 0000010E C605[74010000]07        	mov byte [chr], 07h
   192 00000115 EBBE                    	jmp short G1
   193                                  G5:
   194 00000117 4F                      	dec edi ; 18/02/2022
   195                                  	; 
   196 00000118 FECA                    	dec dl
   197 0000011A 8815[77010000]          	mov byte [cursorpos], dl
   198 00000120 8A0D[75010000]          	mov cl, [console]
   199 00000126 80F908                  	cmp cl, 8
   200 00000129 7209                    	jb  short G6
   201                                  	; 18/02/2022
   202                                  	;dec edi
   203                                  	;;mov [chr], al
   204 0000012B C605[74010000]08        	mov byte [chr], BACKSPACE
   205 00000132 EBA1                    	jmp short G1	
   206                                  G6:
   207 00000134 B520                    	mov ch, 20h ; ch < FFh & ch > 0 -> write 20h
   208                                  		    ; (space) at requested cursor position	 		
   209 00000136 31DB                    	xor ebx, ebx ; 0 
   210                                  	sys _stty  ; set cursor pos. for console tty
    81                              <1> 
    82                              <1>  %if %0 >= 2
    83                              <1>  mov ebx, %2
    84                              <1>  %if %0 >= 3
    85                              <1>  mov ecx, %3
    86                              <1>  %if %0 = 4
    87                              <1>  mov edx, %4
    88                              <1>  %endif
    89                              <1>  %endif
    90                              <1>  %endif
    91 00000138 B81F000000          <1>  mov eax, %1
    92 0000013D CD30                <1>  int 30h
   211                                  		   ; (back space)
   212 0000013F 72AC                    	jc  short terminate
   213                                  	; 18/02/2022
   214                                  	;dec edi
   215 00000141 E95BFFFFFF                      jmp getc
   216                                  G7:
   217                                  	;mov byte [esi], 0 ; ASCIIZ string
   218                                  	;cmp byte [esi-1], 20h
   219                                  	;jne short go
   220                                  	;mov byte [esi-1], 0
   221                                  ;G8:
   222                                  	;dec esi
   223                                  	;; 18/02/2022
   224                                  	;cmp byte [esi], 20h
   225                                  	;jne short go
   226                                  	;mov byte [esi], 0
   227                                  	;jmp short G8 
   228                                  	
   229                                  	; 18/02/2022
   230 00000146 C60700                  	mov byte [edi], 0
   231                                  G8:
   232 00000149 4F                      	dec edi
   233 0000014A 803F20                  	cmp byte [edi], 20h
   234 0000014D 7505                    	jne short go
   235 0000014F C60700                  	mov byte [edi], 0
   236 00000152 EBF5                    	jmp short G8			
   237                                  go:
   238                                          sys _exec, login, loginp
    81                              <1> 
    82                              <1>  %if %0 >= 2
    83 00000154 BB[79010000]        <1>  mov ebx, %2
    84                              <1>  %if %0 >= 3
    85 00000159 B9[68010000]        <1>  mov ecx, %3
    86                              <1>  %if %0 = 4
    87                              <1>  mov edx, %4
    88                              <1>  %endif
    89                              <1>  %endif
    90                              <1>  %endif
    91 0000015E B80B000000          <1>  mov eax, %1
    92 00000163 CD30                <1>  int 30h
   239                                  	; 05/02/2022
   240 00000165 EB86                    	jmp short terminate
   241                                  
   242 00000167 90                      align 4
   243                                  loginp: 
   244 00000168 [79010000]              	dd login
   245 0000016C [AA010000]                      dd uname
   246 00000170 00000000                	dd 0
   247                                  chr:	
   248 00000174 00                      	db 0
   249                                  ;align 2
   250                                  console: 
   251 00000175 00                      	db 0 ; console tty
   252                                  ; cursor position
   253                                  cposll: 
   254 00000176 00                      	db 0 ; left limit of cursor position
   255                                  cursorpos: 
   256 00000177 00                      	db 0 ; row (for backspace)
   257 00000178 FF                      	db 0FFh ; column 
   258                                             ; (FFh for serial ports, for sysstty) 
   259                                  ;(cursorpos will set by return of sysgtty for pseduo ttys)
   260                                  
   261                                  ;align 2
   262                                  login:	
   263 00000179 2F62696E2F6C6F6769-     	db '/bin/login', 0
   263 00000182 6E00               
   264                                  
   265                                  align 2
   266                                  msglogin:
   267 00000184 0D0A                    	db 0Dh, 0Ah
   268 00000186 526574726F20556E69-     	db 'Retro Unix 386 v1 (tty'
   268 0000018F 782033383620763120-
   268 00000198 28747479           
   269 0000019C 78                      ttynum: db 'x'
   270 0000019D 29                      	db ')'
   271 0000019E 0D0A                    	db 0Dh, 0Ah
   272 000001A0 6C6F67696E203A20        	db 'login : '
   273                                  ml_size equ $ - msglogin
   274 000001A8 00                      	db 0
   275 000001A9 90                      align 2
   276                                  uname:  
   277 000001AA 00<rep 10h>             	times 16 db 0
   278                                  	; 18/02/2022
   279 000001BA 00                      	db 0
   280 000001BB 12                      	db 18
   281                                  
   282                                  ;/ getty --  get name and tty mode
   283                                  ;/ for initialization
   284                                  ;
   285                                  ;/ cycle through speeds and "login:" messages
   286                                  ;/ summarized in itab
   287                                  ;
   288                                  ;stty = 31.
   289                                  ;
   290                                  ;	sys	quit; 0
   291                                  ;	sys	intr; 0
   292                                  ;0:
   293                                  ;	jsr	r5,nextspeed
   294                                  ;1:
   295                                  ;	mov	$name,r5
   296                                  ;2:
   297                                  ;	jsr	r5,getc
   298                                  ;	cmp	r0,$174
   299                                  ;	beq	5f
   300                                  ;	cmp	r0,$176
   301                                  ;	beq	5f
   302                                  ;	cmp	r0,$'\n
   303                                  ;	beq	1f
   304                                  ;	cmp	r0,$'\r
   305                                  ;	beq	4f
   306                                  ;	cmp	r0,$'@
   307                                  ;	beq	1b
   308                                  ;	cmp	r0,$'#
   309                                  ;	bne	3f
   310                                  ;	cmp	r5,$name
   311                                  ;	blos	2b
   312                                  ;	dec	r5
   313                                  ;	br	2b
   314                                  ;3:
   315                                  ;	movb	r0,(r5)+
   316                                  ;	br	2b
   317                                  ;4:
   318                                  ;	bis	$20,flags		/cr bit
   319                                  ;	mov	$1,r0
   320                                  ;	sys	write; nl; 1
   321                                  ;	br	2f
   322                                  ;5:
   323                                  ;	mov	$tab2741,itabp
   324                                  ;	inc	nowr
   325                                  ;	br	0b
   326                                  ;1:
   327                                  ;	mov	$1,r0
   328                                  ;	sys	write; cr; 1
   329                                  ;2:
   330                                  ;	clrb	(r5)+
   331                                  ;
   332                                  ;/ determine whether terminal is upper-case only
   333                                  ;
   334                                  ;	cmp	r5,$name+1
   335                                  ;	bhi	1f
   336                                  ;	bic	$4,flags	/no data-assume lc
   337                                  ;1:
   338                                  ;	mov	$name,r5
   339                                  ;1:
   340                                  ;	movb	(r5)+,r0
   341                                  ;	beq	1f
   342                                  ;	cmp	r0,$'A
   343                                  ;	blo	2f
   344                                  ;	cmp	r0,$'Z
   345                                  ;	bhi	2f
   346                                  ;	add	$40,r0		/ map to lc
   347                                  ;	movb	r0,-1(r5)
   348                                  ;	br	1b
   349                                  ;2:
   350                                  ;	cmp	r0,$'a
   351                                  ;	blo	1b
   352                                  ;	cmp	r0,$'z
   353                                  ;	bhi	1b
   354                                  ;	bic	$4,flags
   355                                  ;	br	1b
   356                                  ;1:
   357                                  ;	clr	r0
   358                                  ;	mov	fstate,r4
   359                                  ;	bis	flags,4(r4)
   360                                  ;	sys	stty; fstate: ..
   361                                  ;
   362                                  ;go:
   363                                  ;	sys	exec; login; loginp
   364                                  ;	sys	exit
   365                                  ;
   366                                  ;getc:
   367                                  ;	clr	r0
   368                                  ;	sys	read; ch; 1
   369                                  ;	tst	r0
   370                                  ;	beq	done
   371                                  ;	mov	ch,r2
   372                                  ;	beq	1f
   373                                  ;getc1:
   374                                  ;	cmp	r2,$174
   375                                  ;	bhis	3f
   376                                  ;	tst	nowr
   377                                  ;	bne	3f
   378                                  ;	mov	$1,r0
   379                                  ;	sys	write; ch; 1
   380                                  ;3:
   381                                  ;	mov	r2,r0
   382                                  ;	rts	r5
   383                                  ;1:
   384                                  ;	dec	$0		/ wait a while
   385                                  ;	bne	1b
   386                                  ;	mov	$name,(sp)
   387                                  ;	jsr	r5,nextspeed
   388                                  ;2:
   389                                  ;	clr	r0		/ flush nulls
   390                                  ;	sys	read; ch; 1
   391                                  ;	tst	r0
   392                                  ;	beq	done
   393                                  ;	movb	ch,r2
   394                                  ;	beq	2b
   395                                  ;	br	getc1
   396                                  ;
   397                                  ;done:
   398                                  ;	sys	exit
   399                                  ;
   400                                  ;nextspeed:
   401                                  ;	mov	itabp,r1
   402                                  ;	mov	(r1)+,0f
   403                                  ;	bne	1f
   404                                  ;	mov	$itab,itabp
   405                                  ;	br	nextspeed
   406                                  ;1:
   407                                  ;	clr	r0
   408                                  ;	sys	stty; 0:..
   409                                  ;	bes	go
   410                                  ;	mov	(r1)+,-(sp)
   411                                  ;	mov	(r1)+,fstate
   412                                  ;	mov	r1,itabp
   413                                  ;	mov	(sp)+,r1
   414                                  ;1:
   415                                  ;	movb	(r1)+,ch
   416                                  ;	beq	1f
   417                                  ;	mov	$1,r0
   418                                  ;	sys	write; ch; 1
   419                                  ;	br	1b
   420                                  ;1:
   421                                  ;	rts	r5
   422                                  ;
   423                                  ;itabp:	itab
   424                                  ;loginp:login
   425                                  ;	name
   426                                  ;	0
   427                                  ;
   428                                  ;itab:
   429                                  ;	itty37; ttymes; tty37
   430                                  ;	itn300; tnmes;  tn300
   431                                  ;tab2741:i2741; m2741; f2741
   432                                  ;	0
   433                                  ;
   434                                  ;itty37:511; 511; 340	/ any parity, raw, 150 baud
   435                                  ;tty37:	511; 511; 210	/ 37 parity, echo, 150 baud
   436                                  ;itn300:521; 521; 340	/ any parity, raw, cr, 300 baud
   437                                  ;tn300:	521; 521; 310	/ any parity, echo, 300 baud
   438                                  ;i2741:	1501; 501; 100540	/134 bits, 2741, raw, first time
   439                                  ;f2741:	1501; 501; 500	/134 bps, 2741
   440                                  ;
   441                                  ;	0
   442                                  ;m2741:	<\nlogin: \0>
   443                                  ;
   444                                  ;ttymes:
   445                                  ;	<\n\r\p:\alogin: \0>
   446                                  ;tnmes:
   447                                  ;	<\n\r\p;login: \0>
   448                                  ;
   449                                  ;login:	</bin/login\0>
   450                                  ;	.even
   451                                  ;
   452                                  ;nl:	<\n>
   453                                  ;cr:	<\r>
   454                                  ;
   455                                  ;flags:	004	/ upper case map
   456                                  ;
   457                                  ;	.bss
   458                                  ;ch:	.=.+2
   459                                  ;nowr:	.=.+2
   460                                  ;name:	.=.+32.
