     1                                  ; ****************************************************************************
     2                                  ; ctrlbk.s - TRDOS 386 (TRDOS v2.0) Kernel - CTRL+BRK test
     3                                  ; ----------------------------------------------------------------------------
     4                                  ;
     5                                  ; 23/08/2024
     6                                  ;
     7                                  ; [ Last Modification: 23/08/2024 ]
     8                                  ;
     9                                  ; ****************************************************************************
    10                                  
    11                                  ; 20/08/2024 ; TRDOS 386 v2.0.9 (exit code)
    12                                  ; 20/08/2017
    13                                  ; 01/03/2017
    14                                  ; 16/10/2016
    15                                  ; 29/04/2016
    16                                  ; TRDOS 386 system calls (temporary list!)
    17                                  _ver 	equ 0
    18                                  _exit 	equ 1
    19                                  _fork 	equ 2
    20                                  _read 	equ 3
    21                                  _write	equ 4
    22                                  _open	equ 5
    23                                  _close 	equ 6
    24                                  _wait 	equ 7
    25                                  _creat 	equ 8
    26                                  _link 	equ 9
    27                                  _unlink	equ 10
    28                                  _exec	equ 11
    29                                  _chdir	equ 12
    30                                  _time 	equ 13
    31                                  _mkdir 	equ 14
    32                                  _chmod	equ 15
    33                                  _chown	equ 16
    34                                  _break	equ 17
    35                                  _stat	equ 18
    36                                  _seek	equ 19
    37                                  _tell 	equ 20
    38                                  _mount	equ 21
    39                                  _umount	equ 22
    40                                  _setuid	equ 23
    41                                  _getuid	equ 24
    42                                  _stime	equ 25
    43                                  _quit	equ 26	
    44                                  _intr	equ 27
    45                                  _fstat	equ 28
    46                                  _emt 	equ 29
    47                                  _mdate 	equ 30
    48                                  _video 	equ 31
    49                                  _audio	equ 32
    50                                  _timer	equ 33
    51                                  _sleep	equ 34
    52                                  _msg    equ 35
    53                                  _geterr	equ 36
    54                                  _fpsave	equ 37
    55                                  _pri	equ 38
    56                                  _rele	equ 39
    57                                  _fff	equ 40
    58                                  _fnf	equ 41
    59                                  _alloc	equ 42
    60                                  _dalloc equ 43
    61                                  _calbac equ 44
    62                                  _dma	equ 45
    63                                  _stdio  equ 46	;  TRDOS 386 v2.0.9
    64                                  
    65                                  %macro sys 1-4
    66                                      ; 29/04/2016 - TRDOS 386 (TRDOS v2.0)	
    67                                      ; 03/09/2015	
    68                                      ; 13/04/2015
    69                                      ; Retro UNIX 386 v1 system call.	
    70                                      %if %0 >= 2   
    71                                          mov ebx, %2
    72                                          %if %0 >= 3    
    73                                              mov ecx, %3
    74                                              %if %0 = 4
    75                                                 mov edx, %4   
    76                                              %endif
    77                                          %endif
    78                                      %endif
    79                                      mov eax, %1
    80                                      ;int 30h
    81                                      int 40h ; TRDOS 386 (TRDOS v2.0)	   
    82                                  %endmacro
    83                                  
    84                                  ; TRDOS 386 (and Retro UNIX 386 v1) system call format:
    85                                  ; sys systemcall (eax) <arg1 (ebx)>, <arg2 (ecx)>, <arg3 (edx)>
    86                                  
    87                                  ;========================================================================
    88                                  ; EXEC TEST - CODE
    89                                  ;========================================================================
    90                                  
    91                                  [BITS 32] ; 32-bit intructions
    92                                  
    93                                  [ORG 0] 
    94                                  
    95                                  START_CODE:
    96                                  	sys	_msg, program, len0, 0Bh
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 00000000 BB[56020000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 00000005 B92D000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 0000000A BA0B000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 0000000F B823000000          <1>  mov eax, %1
    80                              <1> 
    81 00000014 CD40                <1>  int 40h
    97                                  	sys	_msg, owner, 255, 0Ch
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 00000016 BB[84020000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 0000001B B9FF000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 00000020 BA0C000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 00000025 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 0000002A CD40                <1>  int 40h
    98                                  
    99                                  	sys	_intr, 0	 ; disable CTRL+BREAK terminate function
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 0000002C BB00000000          <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73                              <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75                              <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 00000031 B81B000000          <1>  mov eax, %1
    80                              <1> 
    81 00000036 CD40                <1>  int 40h
   100                                  
   101                                  	sys	_msg, ctrlbrk_def, len1, 07h
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 00000038 BB[9F020000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 0000003D B925000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 00000042 BA07000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 00000047 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 0000004C CD40                <1>  int 40h
   102                                  	sys	_msg, ctrlbrk, len2, 0Fh
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 0000004E BB[C5020000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 00000053 B92D000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 00000058 BA0F000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 0000005D B823000000          <1>  mov eax, %1
    80                              <1> 
    81 00000062 CD40                <1>  int 40h
   103                                  	sys	_msg, ctrlbrk_skip, len3, 07h
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 00000064 BB[F3020000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 00000069 B92B000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 0000006E BA07000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 00000073 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 00000078 CD40                <1>  int 40h
   104                                  
   105                                  	;sys	_time, 0  ; get time in unix epoch format
   106                                  	;mov	[time], eax
   107 0000007A EB23                    	jmp	short getchar_@@@
   108                                  
   109                                  getchar_@:
   110 0000007C 803D[A5030000]01        	cmp	byte [stage], 1
   111 00000083 751A                    	jne	short getchar_@@@
   112                                  getchar_@@:
   113                                  	sys	_quit
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71                              <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73                              <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75                              <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 00000085 B81A000000          <1>  mov eax, %1
    80                              <1> 
    81 0000008A CD40                <1>  int 40h
   114 0000008C 83F8FF                  	cmp	eax, -1 ; quit
   115 0000008F 750E                    	jne	short getchar_@@@
   116 00000091 803D[A5030000]01        	cmp	byte [stage], 1
   117 00000098 7205                    	jb	short getchar_@@@
   118 0000009A E916010000              	jmp	quit_request
   119                                  
   120                                  getchar_@@@:
   121                                  	; getchar
   122                                  	;mov	ah, 10h
   123                                  	;int	32h
   124                                  
   125                                  	; stdio getchar (TRTDOS 386 Kernel v2.0.9 and later)
   126                                  	;mov	bl, 7	; read character (ascii and scancode) on stdin
   127                                  			; -no redirection, no wait-
   128                                  	sys	_stdio, 7
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 0000009F BB07000000          <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73                              <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75                              <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 000000A4 B82E000000          <1>  mov eax, %1
    80                              <1> 
    81 000000A9 CD40                <1>  int 40h
   129                                  	
   130 000000AB 21C0                    	and	eax, eax
   131 000000AD 74D6                    	jz	short getchar_@@
   132                                  
   133 000000AF 3C20                    	cmp	al, 20h
   134 000000B1 7451                    	je	short skip_stage_@
   135                                  
   136                                  	;sys	_time, 0 ; get time in unix epoch format
   137                                  	
   138                                  	;cmp	eax, [time]
   139                                  	;je	short getchar_@ ; same second
   140                                  	
   141 000000B3 31C0                    	xor	eax, eax
   142 000000B5 8A1D[A4030000]          	mov	bl, [counter]
   143 000000BB FE05[A4030000]          	inc	byte [counter]
   144 000000C1 80E303                  	and	bl, 3
   145 000000C4 B006                    	mov	al, len4
   146 000000C6 F6E3                    	mul	bl
   147 000000C8 05[A6030000]            	add	eax, _one_two_three_four
   148                                  print_1234:
   149                                  	sys	_msg, eax, len4, 07h
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 000000CD 89C3                <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 000000CF B906000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 000000D4 BA07000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 000000D9 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 000000DE CD40                <1>  int 40h
   150 000000E0 F605[A4030000]03        	test	byte [counter], 3
   151 000000E7 7593                    	jnz	short getchar_@
   152                                  print_crlf:
   153                                  	sys	_msg, crlf, 2, 07h
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 000000E9 BB[1C030000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 000000EE B902000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 000000F3 BA07000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 000000F8 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 000000FD CD40                <1>  int 40h
   154 000000FF E978FFFFFF              	jmp	getchar_@
   155                                  
   156                                  skip_stage_@:
   157 00000104 FE05[A5030000]          	inc	byte [stage]
   158 0000010A 803D[A5030000]01        	cmp	byte [stage], 1
   159 00000111 7741                    	ja	short enable_ctrlbrk
   160                                  	sys	_msg, sysquit_msg, 255, 0Ah
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 00000113 BB[1F030000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 00000118 B9FF000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 0000011D BA0A000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 00000122 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 00000127 CD40                <1>  int 40h
   161                                  	sys	_msg, ctrlbrk_skip, len3, 07h
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 00000129 BB[F3020000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 0000012E B92B000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 00000133 BA07000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 00000138 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 0000013D CD40                <1>  int 40h
   162                                  skip_stage_@@:
   163 0000013F F605[A4030000]03        	test	byte [counter], 3
   164 00000146 C605[A4030000]00        	mov	byte [counter], 0
   165 0000014D 749A                    	jz	short print_crlf
   166 0000014F E931FFFFFF              	jmp	getchar_@@
   167                                  
   168                                  enable_ctrlbrk:
   169 00000154 803D[A5030000]02        	cmp	byte [stage], 2
   170                                  	;ja	short _ok
   171 0000015B 7605                    	jna	short enable_ctrlbrk_@
   172 0000015D E9B9000000              	jmp	_ok
   173                                  enable_ctrlbrk_@:
   174                                  	sys	_intr, 1
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 00000162 BB01000000          <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73                              <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75                              <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 00000167 B81B000000          <1>  mov eax, %1
    80                              <1> 
    81 0000016C CD40                <1>  int 40h
   175                                  	sys	_msg, ctrlbrk_enabled, 255, 0Eh
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 0000016E BB[7B030000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 00000173 B9FF000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 00000178 BA0E000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 0000017D B823000000          <1>  mov eax, %1
    80                              <1> 
    81 00000182 CD40                <1>  int 40h
   176                                  	sys	_msg, ctrlbrk, len2, 0Fh
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 00000184 BB[C5020000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 00000189 B92D000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 0000018E BA0F000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 00000193 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 00000198 CD40                <1>  int 40h
   177                                  	sys	_msg, ctrlbrk_skip, len3, 07h
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 0000019A BB[F3020000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 0000019F B92B000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 000001A4 BA07000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 000001A9 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 000001AE CD40                <1>  int 40h
   178 000001B0 E9EAFEFFFF              	jmp	getchar_@@@
   179                                  
   180                                  quit_request:
   181                                  	sys	_msg, quit_question, 255, 0Fh
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 000001B5 BB[43030000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 000001BA B9FF000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 000001BF BA0F000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 000001C4 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 000001C9 CD40                <1>  int 40h
   182                                  quit_request_@:
   183                                  	; getchar
   184                                  	;mov	ah, 10h
   185                                  	;int	32h
   186                                  
   187                                  	; stdio getchar (TRTDOS 386 Kernel v2.0.9 and later)
   188                                  	;mov	bl, 6	; read character (ascii and scancode) on stdin
   189                                  			; -no redirection, wait-
   190                                  	sys	_stdio, 6
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 000001CB BB06000000          <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73                              <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75                              <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 000001D0 B82E000000          <1>  mov eax, %1
    80                              <1> 
    81 000001D5 CD40                <1>  int 40h
   191                                  
   192 000001D7 24DF                    	and	al, ~20h ; 0DFh ; capitalize letter
   193 000001D9 3C59                    	cmp	al, 'Y'
   194 000001DB 7426                    	je	short print_yes
   195 000001DD 3C4E                    	cmp	al, 'N'
   196 000001DF 75EA                    	jne	short quit_request_@
   197                                  print_no:
   198 000001E1 C605[A4030000]00        	mov	byte [counter], 0
   199                                  	sys	_msg, msg_no, 4, 07h
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 000001E8 BB[C4030000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 000001ED B904000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 000001F2 BA07000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 000001F7 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 000001FC CD40                <1>  int 40h
   200 000001FE E982FEFFFF              	jmp	getchar_@@
   201                                  
   202                                  print_yes:
   203                                  	sys	_msg, msg_yes, 5, 07h
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 00000203 BB[BE030000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 00000208 B905000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 0000020D BA07000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 00000212 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 00000217 CD40                <1>  int 40h
   204 00000219 EB16                    	jmp	short terminate
   205                                  
   206                                  _ok:
   207                                  	sys	_msg, msg_ok, 255, 07h
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 0000021B BB[C9030000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 00000220 B9FF000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 00000225 BA07000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 0000022A B823000000          <1>  mov eax, %1
    80                              <1> 
    81 0000022F CD40                <1>  int 40h
   208                                  
   209                                  terminate:
   210                                  	sys	_msg, crlf, 2, 07h
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 00000231 BB[1C030000]        <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73 00000236 B902000000          <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75 0000023B BA07000000          <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 00000240 B823000000          <1>  mov eax, %1
    80                              <1> 
    81 00000245 CD40                <1>  int 40h
   211                                  
   212                                  	sys	_exit, 0	; ebx = exit code
    66                              <1> 
    67                              <1> 
    68                              <1> 
    69                              <1> 
    70                              <1>  %if %0 >= 2
    71 00000247 BB00000000          <1>  mov ebx, %2
    72                              <1>  %if %0 >= 3
    73                              <1>  mov ecx, %3
    74                              <1>  %if %0 = 4
    75                              <1>  mov edx, %4
    76                              <1>  %endif
    77                              <1>  %endif
    78                              <1>  %endif
    79 0000024C B801000000          <1>  mov eax, %1
    80                              <1> 
    81 00000251 CD40                <1>  int 40h
   213                                  	;sys	_exit
   214                                  here:
   215 00000253 90                      	nop
   216 00000254 EBFD                    	jmp	short here
   217                                  
   218                                  ;-----------------------------------------------------------------
   219                                  ;  messages
   220                                  ;-----------------------------------------------------------------
   221                                  
   222                                  program:
   223 00000256 0D0A                    		db 0Dh, 0Ah
   224 00000258 5452444F5320333836-     		db "TRDOS 386 v2.0.9 - CTRL+BRK Function Test"
   224 00000261 2076322E302E39202D-
   224 0000026A 204354524C2B42524B-
   224 00000273 2046756E6374696F6E-
   224 0000027C 2054657374         
   225 00000281 0D0A                    		db 0Dh, 0Ah
   226                                  len0	equ $-program
   227 00000283 00                      		db 0
   228                                  owner:
   229 00000284 4572646F67616E2054-     		db "Erdogan Tan - 23/08/2024"	
   229 0000028D 616E202D2032332F30-
   229 00000296 382F32303234       
   230 0000029C 0D0A00                  		db 0Dh, 0Ah, 0
   231                                  
   232                                  ctrlbrk_def:
   233 0000029F 0D0A                    		db 0Dh, 0Ah
   234 000002A1 44656661756C742043-     		db "Default CTRL+BRK function disabled."
   234 000002AA 54524C2B42524B2066-
   234 000002B3 756E6374696F6E2064-
   234 000002BC 697361626C65642E   
   235                                  len1	equ  $-ctrlbrk_def
   236 000002C4 00                      		db 0
   237                                  ctrlbrk:
   238 000002C5 0D0A                    		db 0Dh, 0Ah
   239 000002C7 507265737320435452-     		db "Press CTRL+BREAK keys (together) to test."
   239 000002D0 4C2B425245414B206B-
   239 000002D9 6579732028746F6765-
   239 000002E2 746865722920746F20-
   239 000002EB 746573742E         
   240 000002F0 0D0A                    		db 0Dh, 0Ah
   241                                  len2	equ  $-ctrlbrk
   242 000002F2 00                      		db 0
   243                                  ctrlbrk_skip:	
   244 000002F3 0D0A                    		db 0Dh, 0Ah
   245 000002F5 507265737320535041-     		db "Press SPACEBAR to skip this test stage."
   245 000002FE 434542415220746F20-
   245 00000307 736B69702074686973-
   245 00000310 207465737420737461-
   245 00000319 67652E             
   246                                  crlf:
   247 0000031C 0D0A                    		db 0Dh, 0Ah
   248                                  len3	equ  $-ctrlbrk_skip
   249 0000031E 00                      		db 0
   250                                  
   251                                  sysquit_msg:
   252 0000031F 0D0A                    		db 0Dh, 0Ah
   253 00000321 535953515549542043-     		db "SYSQUIT CTRL+BRK handling test."
   253 0000032A 54524C2B42524B2068-
   253 00000333 616E646C696E672074-
   253 0000033C 6573742E           
   254 00000340 0D0A00                  		db 0Dh, 0Ah, 0
   255                                  quit_question:
   256 00000343 0D0A                    		db 0Dh, 0Ah
   257 00000345 535953515549542043-     		db "SYSQUIT CTRL+BREAK"
   257 0000034E 54524C2B425245414B 
   258 00000357 0D0A                    		db 0Dh, 0Ah	
   259 00000359 446F20796F75207761-     		db "Do you want to quit/break (Y/N)? " 
   259 00000362 6E7420746F20717569-
   259 0000036B 742F627265616B2028-
   259 00000374 592F4E293F20       
   260 0000037A 00                      		db 0
   261                                  ctrlbrk_enabled:
   262 0000037B 0D0A                    		db 0Dh, 0Ah
   263 0000037D 44656661756C742043-     		db "Default CTRL+BRK function ENABLED."
   263 00000386 54524C2B42524B2066-
   263 0000038F 756E6374696F6E2045-
   263 00000398 4E41424C45442E     
   264 0000039F 00                      		db 0
   265                                  
   266 000003A0 00000000                time:		dd 0
   267 000003A4 00                      counter:	db 0
   268 000003A5 00                      stage:		db 0
   269                                  
   270                                  _one_two_three_four:
   271 000003A6 4F4E45202020            		db "ONE   "
   272                                  len4	equ $ - _one_two_three_four
   273 000003AC 54574F202020            		db "TWO   "
   274 000003B2 544852454520            		db "THREE "
   275 000003B8 464F55522020            		db "FOUR  "
   276                                  
   277 000003BE 5965730D0A00            msg_yes:	db "Yes", 0Dh, 0Ah, 0
   278 000003C4 4E6F0D0A00              msg_no:		db "No", 0Dh, 0Ah, 0
   279                                  
   280                                  msg_ok:
   281 000003C9 0D0A                    		db 0Dh, 0Ah
   282 000003CB 4F4B2E20                		db "OK. "
   283 000003CF 00                      		db 0
