Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 40562 | Differences between
and this patch

Collapse All | Expand All

(-)lilo-22.5.8/Makefile (-4 / +4 lines)
Lines 57-63 Link Here
57
57
58
# set the compiler optimization level
58
# set the compiler optimization level
59
59
60
OPT=-O2
60
OPT=-O2 -fomit-frame-pointer
61
61
62
62
63
# End of configuration variables
63
# End of configuration variables
Lines 264-278 Link Here
264
first.s:	first.S lilo.h version.h
264
first.s:	first.S lilo.h version.h
265
		$(CPP) $(PCONFIG) -DFIRST=0x9c4ad6f1 -o first.s first.S
265
		$(CPP) $(PCONFIG) -DFIRST=0x9c4ad6f1 -o first.s first.S
266
266
267
second.s:	second.S read.S volume.S mapper.S biosdata.S shs3.S bdata.h lilo.h version.h \
267
second.s:	second.S gfxlogo.S read.S volume.S mapper.S biosdata.S shs3.S bdata.h lilo.h version.h \
268
			graph.S menu.S strlen.S bitmap.S display4.S
268
			graph.S menu.S strlen.S bitmap.S display4.S
269
		$(CPP) $(PCONFIG) -DTEXT=0xe8dc5197 second.S -o second.s
269
		$(CPP) $(PCONFIG) -DTEXT=0xe8dc5197 second.S -o second.s
270
270
271
third.s:	second.S read.S volume.S mapper.S biosdata.S bdata.h lilo.h version.h \
271
third.s:	second.S gfxlogo.S read.S volume.S mapper.S biosdata.S bdata.h lilo.h version.h \
272
			graph.S menu.S strlen.S crt.S
272
			graph.S menu.S strlen.S crt.S
273
		$(CPP) $(PCONFIG) -DMENU=0x6d2d3592 second.S -o third.s
273
		$(CPP) $(PCONFIG) -DMENU=0x6d2d3592 second.S -o third.s
274
274
275
bitmap.s:	second.S read.S volume.S mapper.S biosdata.S bdata.h lilo.h version.h \
275
bitmap.s:	second.S gfxlogo.S read.S volume.S mapper.S biosdata.S bdata.h lilo.h version.h \
276
			strlen.S bitmap.S display4.S
276
			strlen.S bitmap.S display4.S
277
		$(CPP) $(PCONFIG) -DBITMAP=0xcc25a452 second.S -o bitmap.s
277
		$(CPP) $(PCONFIG) -DBITMAP=0xcc25a452 second.S -o bitmap.s
278
278
(-)lilo-22.5.8/bsect.c (+2 lines)
Lines 769-774 Link Here
769
	    die("%s is too big (> %d bytes)",message,i);
769
	    die("%s is too big (> %d bytes)",message,i);
770
	param2.msg_len = bitmap ? (st.st_size+15)/16 : st.st_size;
770
	param2.msg_len = bitmap ? (st.st_size+15)/16 : st.st_size;
771
	map_begin_section();
771
	map_begin_section();
772
	if(!bitmap)param2.msg_len = st.st_size > 0xffff ? 0xffff : st.st_size;
772
#ifndef LCF_UNIFY
773
#ifndef LCF_UNIFY
773
	map_add(&geo,0,((st.st_size)+SECTOR_SIZE-1)/SECTOR_SIZE);
774
	map_add(&geo,0,((st.st_size)+SECTOR_SIZE-1)/SECTOR_SIZE);
774
#else
775
#else
Lines 1058-1063 Link Here
1058
	else if (!strcasecmp(vga,"ext") || !strcasecmp(vga,"extended"))
1059
	else if (!strcasecmp(vga,"ext") || !strcasecmp(vga,"extended"))
1059
		descr->vga_mode = EXTENDED_VGA;
1060
		descr->vga_mode = EXTENDED_VGA;
1060
	else if (!strcasecmp(vga,"ask")) descr->vga_mode = ASK_VGA;
1061
	else if (!strcasecmp(vga,"ask")) descr->vga_mode = ASK_VGA;
1062
	else if (!strcasecmp(vga,"inst")) descr->vga_mode = INST_VGA;
1061
	else descr->vga_mode = to_number(vga);
1063
	else descr->vga_mode = to_number(vga);
1062
#endif
1064
#endif
1063
    }
1065
    }
(-)lilo-22.5.8/geometry.c (+23 lines)
Lines 26-31 Link Here
26
26
27
#include <string.h>
27
#include <string.h>
28
28
29
#include <linux/kdev_t.h>      /* for major and minor macros */
30
#ifndef BMAP_IOCTL
31
# define BMAP_IOCTL 1          /* obsolete - kept for compatibility */
32
#endif
33
#ifndef FIBMAP
34
# define FIBMAP     _IO(0x00,1)  /* bmap access */
35
#endif
36
#ifndef FIGETBSZ
37
# define FIGETBSZ   _IO(0x00,2)
38
#endif
39
40
#include <sys/statfs.h>
41
#include <linux/fd.h>          /* for fdgetprm */
42
#include <linux/hdreg.h>       /* for hdio_getgeo */
43
29
#include "config.h"
44
#include "config.h"
30
#include "lilo.h"
45
#include "lilo.h"
31
#include "common.h"
46
#include "common.h"
Lines 659-664 Link Here
659
	    geo->start = hdprm.start;
674
	    geo->start = hdprm.start;
660
	    break;
675
	    break;
661
676
677
        case MAJOR_LOOP:
678
            geo->device = 0;
679
            geo->heads = 2;
680
            geo->cylinders = 80;
681
            geo->sectors = 18;
682
            geo->start = 0;
683
            break;
684
662
	default:
685
	default:
663
	    if (max_partno[major] == 63)  goto MASK63;
686
	    if (max_partno[major] == 63)  goto MASK63;
664
	    if (max_partno[major] == 15)  goto MASK15;
687
	    if (max_partno[major] == 15)  goto MASK15;
(-)lilo-22.5.8/gfxlogo.S (+569 lines)
Line 0 Link Here
1
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2
;
3
; gfx stuff
4
;
5
; Patch re-adapted and slightly edited from lilo-22.3.4
6
; For problems write me: quequero@bitchx.it
7
;						Quequero
8
;
9
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
10
11
; != 0 -> everything is fine
12
gfx_ok:			.byte 0
13
14
; we need it at some point
15
gfx_tmp:               .word 0
16
17
; the memory area we are working with
18
gfx_mem:		.long 0		; linear address
19
gfx_mem_max:		.long 0		; end address
20
gfx_mem_free:		.long 0		; start of free area for malloc (after pcx image)
21
22
; interface to loadable gfx extension (seg:ofs values)
23
gfx_bc_jt:		.long 0
24
25
gfx_bc_init:		.long 0
26
gfx_bc_done:		.long 0
27
gfx_bc_input:		.long 0
28
gfx_bc_menu_init:	.long 0
29
gfx_bc_infobox_init:	.long 0
30
gfx_bc_infobox_done:	.long 0
31
gfx_bc_progress_init:	.long 0
32
gfx_bc_progress_done:	.long 0
33
gfx_bc_progress_update:	.long 0
34
gfx_bc_progress_limit:	.long 0
35
gfx_bc_password_init:	.long 0
36
gfx_bc_password_done:	.long 0
37
38
; system config data
39
gfx_sysconfig:
40
gfx_sc_vmode:		.byte 0
41
gfx_sc_modes:		.byte 0
42
gfx_bootloader:		.byte 0
43
44
gfx_password_buf:	.blkb 32
45
gfx_msg_wrong_image:	.ascii "Could not find kernel image: "
46
			.byte 0
47
gfx_msg_wrong_password:	.ascii "Sorry, incorrect password."
48
			.byte 0
49
50
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
51
;
52
; I really have no idea how to get as86 to do this properly
53
54
		macro farcall
55
		.byte 0xff
56
		.byte 0x1e
57
		.word ?1
58
		mend
59
60
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
61
;
62
gfx_get_sysconfig:
63
		xor ax,ax
64
		ret
65
66
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
67
;
68
gfx_set_sysconfig:
69
		ret
70
71
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
72
;
73
; Initialize graphics code. Load and display graphics data.
74
;
75
;  edi		file length
76
;
77
;  return:	[gfx_ok] = 0/1
78
;
79
gfx_init:
80
		push es
81
82
		cld
83
84
		mov byte gfx_ok,#0
85
86
		; no gfx if we use a serial line
87
		seg fs
88
		cmp byte par2_port+SSDIFF,#0
89
		jnz near gfx_init_90
90
91
		; define our memory area
92
		; gfx_mem _must_ be 16-byte aligned
93
		mov dword gfx_mem,#0x10000
94
		add edi,gfx_mem
95
		mov gfx_mem_free,edi
96
		mov dword gfx_mem_max,#0x80000
97
98
		sub edi,gfx_mem_max
99
		neg edi
100
		cmp edi,#0x1000		; we need some minimum space
101
		jc near gfx_init_80
102
103
		; align 4
104
		mov eax,gfx_mem_free
105
		add eax,#3
106
		and eax,#~3
107
		mov gfx_mem_free,eax
108
109
		push dword gfx_mem
110
		call gfx_l2so
111
		pop bx
112
		pop es
113
114
		seg es
115
		cmp dword (bx),#0x0b2d97f00	; header.magic_id
116
		jnz near gfx_init_80
117
		seg es
118
		mov al,(bx+4)			; header.version
119
		cmp al,#1
120
		jb near gfx_init_80
121
		cmp al,#2
122
		ja near gfx_init_80
123
124
		seg es
125
		mov eax,(bx+8)
126
		or eax,eax
127
		jz near gfx_init_80
128
		add eax,gfx_mem
129
		test al,#0xf
130
		jnz near gfx_init_80
131
		shr eax,4
132
		mov gfx_bc_jt+2,ax
133
134
135
		; setup jump table
136
		les bx,gfx_bc_jt
137
138
		seg es
139
		mov ax,(bx)
140
		mov gfx_bc_init,ax
141
		mov gfx_bc_init+2,es
142
143
		seg es
144
		mov ax,(bx+2)
145
		mov gfx_bc_done,ax
146
		mov gfx_bc_done+2,es
147
148
		seg es
149
		mov ax,(bx+4)
150
		mov gfx_bc_input,ax
151
		mov gfx_bc_input+2,es
152
153
		seg es
154
		mov ax,(bx+6)
155
		mov gfx_bc_menu_init,ax
156
		mov gfx_bc_menu_init+2,es
157
158
		seg es
159
		mov ax,(bx+8)
160
		mov gfx_bc_infobox_init,ax
161
		mov gfx_bc_infobox_init+2,es
162
163
		seg es
164
		mov ax,(bx+10)
165
		mov gfx_bc_infobox_done,ax
166
		mov gfx_bc_infobox_done+2,es
167
168
		seg es
169
		mov ax,(bx+12)
170
		mov gfx_bc_progress_init,ax
171
		mov gfx_bc_progress_init+2,es
172
173
		seg es
174
		mov ax,(bx+14)
175
		mov gfx_bc_progress_done,ax
176
		mov gfx_bc_progress_done+2,es
177
178
		seg es
179
		mov ax,(bx+16)
180
		mov gfx_bc_progress_update,ax
181
		mov gfx_bc_progress_update+2,es
182
183
		seg es
184
		mov ax,(bx+18)
185
		mov gfx_bc_progress_limit,ax
186
		mov gfx_bc_progress_limit+2,es
187
188
		seg es
189
		mov ax,(bx+20)
190
		mov gfx_bc_password_init,ax
191
		mov gfx_bc_password_init+2,es
192
193
		seg es
194
		mov ax,(bx+22)
195
		mov gfx_bc_password_done,ax
196
		mov gfx_bc_password_done+2,es
197
198
		mov eax,gfx_mem
199
		mov ebx,gfx_mem_free
200
		mov ecx,gfx_mem_max
201
		mov dx,cs
202
		mov si,#gfx_sysconfig
203
204
		; eax	memory start
205
		; ebx	free memory start
206
		; ecx	memory end
207
		; dx	boot loader code segment
208
		; si	gfx_sysconfig offset
209
210
		farcall(gfx_bc_init)
211
212
		jc gfx_init_80
213
214
		mov byte gfx_ok,#1
215
216
		jmp gfx_init_90
217
218
gfx_init_80:
219
		mov byte gfx_ok,#0
220
gfx_init_90:
221
		pop es
222
		ret
223
224
225
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
226
;
227
; Back to text mode.
228
;
229
;  return:	[gfx_ok] = 0
230
;
231
gfx_done:
232
		cmp byte gfx_ok,#0
233
		jz gfx_done_90
234
		farcall(gfx_bc_done)
235
		mov byte gfx_ok,#0
236
		call gfx_set_sysconfig
237
gfx_done_90:
238
		ret
239
240
241
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
242
;
243
gfx_input:
244
		cmp byte gfx_ok,#0
245
		jz gfx_input_90
246
		call gfx_get_sysconfig
247
248
		mov ax,#0xffff
249
		seg fs
250
		xchg ax,par2_timeout
251
252
		; map 0xffff -> 0
253
		add ax,#1
254
		cmc
255
		sbb ax,#0
256
257
gfx_input_20:
258
		mov di,#cmdline
259
		mov cx,#CL_LENGTH
260
261
		; di	buffer  ( 0 --> no buffer )
262
		; cx	buffer size
263
		; ax	timeout value (0 --> no timeout)
264
265
		farcall(gfx_bc_input)
266
267
		pushf
268
		call gfx_set_sysconfig
269
		popf
270
		jnc gfx_input_50
271
		mov ax,#1
272
gfx_input_50:
273
		cmp ax,#1
274
		jz gfx_input_80
275
276
		call find_boot_image
277
		jnc gfx_input_90
278
279
		mov si,#gfx_msg_wrong_image
280
		mov di,#cmdline
281
282
		mov al,#0
283
		call gfx_infobox 
284
285
		xor ax,ax
286
		jmp gfx_input_20
287
gfx_input_80:
288
		push ax
289
		call gfx_done
290
		pop ax
291
gfx_input_90:
292
		ret
293
294
295
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
296
;
297
gfx_setup_menu:
298
		cmp byte gfx_ok,#0
299
		jz gfx_setup_menu_90
300
301
		mov si,#DESCR0
302
		mov di,si
303
		xor ax,ax
304
		mov cx,#IMAGES
305
gfx_setup_menu_20:
306
		cmp byte (si),#0
307
		jz gfx_setup_menu_30
308
		inc ax
309
		add si,#id_size
310
		loop gfx_setup_menu_20
311
gfx_setup_menu_30:
312
		mov si,di
313
		mov dx,#id_size
314
315
		; al	menu entries
316
		; dx	menu entry size
317
		; di	menu entry list
318
		; si	default menu entry
319
320
		farcall(gfx_bc_menu_init)
321
gfx_setup_menu_90:
322
		ret
323
324
325
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
326
;
327
gfx_infobox:
328
		pushad
329
		cmp byte gfx_ok,#0
330
		jz gfx_infobox_90
331
		farcall(gfx_bc_infobox_init)
332
		xor di,di
333
		xor ax,ax
334
		farcall(gfx_bc_input)
335
		farcall(gfx_bc_infobox_done)
336
gfx_infobox_90:
337
		popad
338
		ret
339
340
341
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
342
;
343
gfx_progress_init:
344
		pushad
345
		cmp byte gfx_ok,#0
346
		jz gfx_progress_init_90
347
		movzx eax,ax
348
		farcall(gfx_bc_progress_init)
349
gfx_progress_init_90:
350
		popad
351
		ret
352
353
354
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
355
;
356
gfx_progress_done:
357
		pushad
358
		cmp byte gfx_ok,#0
359
		jz gfx_progress_done_90
360
		farcall(gfx_bc_progress_done)
361
gfx_progress_done_90:
362
		popad
363
		ret
364
365
366
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
367
;
368
gfx_progress_update:
369
		pushad
370
		cmp byte gfx_ok,#0
371
		jz gfx_progress_update_90
372
		movzx eax,cx
373
		farcall(gfx_bc_progress_update)
374
gfx_progress_update_90:
375
		popad
376
		ret
377
378
379
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
380
;
381
gfx_progress_limit:
382
		pushad
383
		cmp byte gfx_ok,#0
384
		jz gfx_progress_limit_90
385
		movzx eax,ax
386
		farcall(gfx_bc_progress_limit)
387
gfx_progress_limit_90:
388
		popad
389
		ret
390
391
392
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
393
;
394
; ds:di image descr
395
;
396
gfx_password:
397
		push es
398
		pushad
399
		cmp byte gfx_ok,#0
400
		stc
401
		jz gfx_password_90
402
		push di
403
		mov si,#gfx_password_buf        ; not used
404
		farcall(gfx_bc_password_init)
405
		mov di,#gfx_password_buf
406
		mov cx,#32
407
		xor ax,ax
408
		farcall(gfx_bc_input)
409
		mov si,#gfx_password_buf
410
		farcall(gfx_bc_password_done)
411
		pop di
412
		call check_password
413
		jnc gfx_password_90
414
		mov si,#gfx_msg_wrong_password
415
		xor di,di
416
		mov al,#0
417
		farcall(gfx_bc_infobox_init)
418
		xor di,di
419
		xor ax,ax
420
		farcall(gfx_bc_input)
421
		farcall(gfx_bc_infobox_done)
422
		stc
423
gfx_password_90:
424
		popad
425
		pop es
426
		ret
427
428
429
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
430
;
431
; Convert 32bit linear address to seg:ofs.
432
;
433
;  dword [esp + 2]:	linear address
434
;
435
; return:
436
;  dword [esp + 2]:	seg:ofs
437
;
438
; Notes:
439
;  - changes no regs
440
;
441
gfx_l2so:
442
		push eax
443
		mov eax,(esp + 6)
444
		shr eax,4
445
		mov (esp + 8),ax
446
		and word (esp + 6),#0xf
447
		pop eax
448
		ret
449
450
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
451
;
452
; locate the boot image
453
;
454
; return:
455
;   bx		boot image index
456
;   CF		error (image not found)
457
;
458
find_boot_image:
459
		mov dx,#DESCR0
460
		mov cx,#IMAGES
461
462
		xor bx,bx
463
464
find_boot_image_10:
465
		mov si,dx
466
		mov di,#cmdline
467
find_boot_image_20:
468
		mov al,(si)
469
		or al,al
470
		jz find_boot_image_60
471
		cmp al,(di)
472
		jnz find_boot_image_30
473
		inc si
474
		inc di
475
		jmp find_boot_image_20
476
find_boot_image_30:
477
		inc bx
478
		add dx,#id_size
479
		cmp bx,cx
480
		jb find_boot_image_10
481
		; not found, strip options for fancy error message
482
483
		mov si,#cmdline
484
		mov cx,#MAX_IMAGE_NAME+1
485
find_boot_image_40:
486
		cmp byte (si),#0x20+1
487
		inc si
488
		jb find_boot_image_50
489
		loop find_boot_image_40
490
find_boot_image_50:
491
		mov byte (si-1),#0
492
		jmp find_boot_image_80
493
find_boot_image_60:
494
		mov al,(di)
495
		cmp al,#0x20
496
		ja find_boot_image_30
497
		imul bx,bx,#id_size
498
		add bx,#DESCR0
499
		jmp find_boot_image_90
500
find_boot_image_80:
501
		stc
502
find_boot_image_90:
503
		ret
504
505
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
506
;
507
; ds:di image descr
508
;
509
; CF = 0: password valid
510
;
511
check_password:
512
#if defined(SHS_PASSWORDS)
513
               mov bp,di
514
               mov di,#gfx_password_buf
515
               mov si,di
516
               push ds
517
               pop es
518
               mov cx,#32 - 1
519
               xor al,al
520
               repne
521
               scasb
522
               sub cx,#32 - 1
523
               not cx
524
               mov bx,cx
525
526
               push ss
527
               pop es
528
               mov cx,#32
529
               sub sp,cx
530
               mov di,sp
531
               rep
532
               movsb
533
               mov si,sp
534
535
               push bp
536
537
               push bx         ; length
538
               push si         ; ss:si password
539
               call _shsInit
540
               call _shsUpdate
541
               call _shsFinal
542
               pop si
543
               pop bx
544
545
               pop di
546
547
               add di,#id_password_crc
548
               mov si,#shs_digest
549
               mov cx,#MAX_PW_CRC*4
550
               push ds
551
               pop es
552
               repe
553
               cmpsb
554
               je check_pw_50
555
               inc cx
556
check_pw_50:
557
               add sp,#32
558
               pushad          ; clear password buffer
559
               mov di,#gfx_password_buf
560
               mov cx,#32
561
               xor al,al
562
               rep
563
               stosb
564
               popad
565
               cmp cx,#1
566
               cmc
567
#endif
568
               ret
569
(-)lilo-22.5.8/lilo.c (+3 lines)
Lines 241-246 Link Here
241
			    case ASK_VGA:
241
			    case ASK_VGA:
242
				printf("ASK\n");
242
				printf("ASK\n");
243
				break;
243
				break;
244
                            case INST_VGA:
245
                                 printf("INST\n");
246
                                 break;
244
			    default:
247
			    default:
245
				printf("%d (0x%04x)\n",
248
				printf("%d (0x%04x)\n",
246
				  descrs.d.descr[image].vga_mode,
249
				  descrs.d.descr[image].vga_mode,
(-)lilo-22.5.8/lilo.h (-1 / +3 lines)
Lines 76-81 Link Here
76
#define MAJOR_FD	2 /* floppy disks */
76
#define MAJOR_FD	2 /* floppy disks */
77
#define MAJOR_HPT370_SORT  MAJOR_FD	/* 114->2 for sorting HPT370 controller */
77
#define MAJOR_HPT370_SORT  MAJOR_FD	/* 114->2 for sorting HPT370 controller */
78
#define MAJOR_HD	3 /* IDE-type hard disks */
78
#define MAJOR_HD	3 /* IDE-type hard disks */
79
#define MAJOR_LOOP      7 /* loop device */
79
#define MAJOR_SD	8 /* SCSI disks 0-15 */
80
#define MAJOR_SD	8 /* SCSI disks 0-15 */
80
#define MAJOR_MD	9 /* multi-disk RAID sets */
81
#define MAJOR_MD	9 /* multi-disk RAID sets */
81
#define MAJOR_XT	13 /* XT-type hard disks */
82
#define MAJOR_XT	13 /* XT-type hard disks */
Lines 291-303 Link Here
291
292
292
293
293
#define VGA_NOCOVR	0x8000	/* VGA setting not overridden on command line */
294
#define VGA_NOCOVR	0x8000	/* VGA setting not overridden on command line */
295
#define INST_VGA        0xfff0  /* test for framebuffer at vga=771 */
294
296
295
#define SER_DFL_PRM	0xa3	/* default serial parameters: 2400n8 */
297
#define SER_DFL_PRM	0xa3	/* default serial parameters: 2400n8 */
296
298
297
#define DC_MAGIC	0xf4f2	/* magic number of default cmd. line sector */
299
#define DC_MAGIC	0xf4f2	/* magic number of default cmd. line sector */
298
#define DC_MGOFF	0x6b6d	/* magic number for disabled line */
300
#define DC_MGOFF	0x6b6d	/* magic number for disabled line */
299
301
300
#define MAX_MESSAGE	65535	/* maximum message length */
302
#define MAX_MESSAGE     8*64*1024-1     /* maximum message length (512k) */
301
#define MAX_MENU_TITLE	37	/* maximum MENU title length */
303
#define MAX_MENU_TITLE	37	/* maximum MENU title length */
302
304
303
#define NEW_HDR_SIG	"HdrS"	/* setup header signature */
305
#define NEW_HDR_SIG	"HdrS"	/* setup header signature */
(-)lilo-22.5.8/partition.c (-1 / +8 lines)
Lines 22-28 Link Here
22
#include <sys/types.h>
22
#include <sys/types.h>
23
#include <asm/unistd.h>
23
#include <asm/unistd.h>
24
#include <limits.h>
24
#include <limits.h>
25
/*#include <linux/fs.h>*/
25
26
#if 0
27
# define _LINUX_STRING_H_
28
# include <linux/fs.h>
29
#else
30
# include <linux/kdev_t.h>
31
#endif
32
26
#include <time.h>
33
#include <time.h>
27
#include "config.h"
34
#include "config.h"
28
#include "lilo.h"
35
#include "lilo.h"
(-)lilo-22.5.8/second.S (-32 / +343 lines)
Lines 602-608 Link Here
602
	seg	es
602
	seg	es
603
	cmp	byte ptr (si),#0 ! empty ?
603
	cmp	byte ptr (si),#0 ! empty ?
604
	je	iloop		! yes -> enter interactive mode
604
	je	iloop		! yes -> enter interactive mode
605
	jmp	niloop		! enter non-interactive mode
605
606
niloop0:
607
        br      niloop          ! enter non-interactive mode
606
608
607
! No external parameters after timeout -> boot first image
609
! No external parameters after timeout -> boot first image
608
610
Lines 610-616 Link Here
610
	pop	es
612
	pop	es
611
	mov	si,#DFLCMD+2	! default command line ?
613
	mov	si,#DFLCMD+2	! default command line ?
612
	cmp	byte ptr (si),#0
614
	cmp	byte ptr (si),#0
613
	jne	niloop		! yes -> use it
615
	jne	niloop0 	! yes -> use it
614
	mov	ax,nodfl	! no idea how to tell as86 to do jmp (addr) :-(
616
	mov	ax,nodfl	! no idea how to tell as86 to do jmp (addr) :-(
615
	jmp	ax		! fall through
617
	jmp	ax		! fall through
616
618
Lines 618-633 Link Here
618
! Command input processor
620
! Command input processor
619
621
620
iloop:
622
iloop:
621
#if defined(MENU) || defined(BITMAP)
623
#ifdef BITMAP	
622
	call	menu_setup
624
	call	menu_setup
623
#endif
625
#endif
624
626
625
#ifndef BITMAP
627
#ifndef BITMAP
628
       cmp     byte gfx_ok,#0
629
       jnz     iloop_gfx
630
631
       ; load message before doing anything else
632
       ; the graphics/text stuff is mixed in a rather messy way...
633
626
;;	BEG_FS
634
;;	BEG_FS
627
;;	SEG_FS		! message disabled ?
635
;;	SEG_FS		! message disabled ?
628
	cmp	word ptr par2_msg_len,#0		;MSG_OFF+SSDIFF,#0
636
	cmp	word ptr par2_msg_len,#0		;MSG_OFF+SSDIFF,#0
629
;;	END_FS
637
;;	END_FS
630
	je	nomsg		! yes -> skip this
638
        ; _must_ be 'jz'!
639
        jz      iloop_20        ! yes -> skip this
631
	call	crlf
640
	call	crlf
632
;BEG_FS
641
;BEG_FS
633
;SEG_FS		! load the message file
642
;SEG_FS		! load the message file
Lines 641-653 Link Here
641
	call	sread
650
	call	sread
642
	call	loadfile
651
	call	loadfile
643
652
653
; es:bx points to file end
654
        movzx   ebx,bx
655
        xor     edi,edi
656
        mov     di,es
657
        shl     edi,4
658
        add     edi,ebx
659
        sub     edi,#SYSSEG * 16
660
661
        ; edi -> message file size
662
644
	xor	bx,bx		! set the terminating NUL and disable further
663
	xor	bx,bx		! set the terminating NUL and disable further
645
				! messages
664
				! messages
646
	xchg	bx,par2_msg_len		;MSG_OFF+SSDIFF
665
	xchg	bx,par2_msg_len		;MSG_OFF+SSDIFF
647
666
648
	push	#SYSSEG
667
	push	#SYSSEG
649
	pop	ds
668
	pop	ds
650
	mov	byte ptr (bx),#0
669
670
671
        cmp     dword ptr 0,#0x0b2d97f00                ; magic header
672
        ; _must_ be 'jnz'!
673
        jnz     iloop_10
674
675
        push    cs
676
        pop     ds
677
678
        ; graphical message
679
680
        call    gfx_init
681
        push    cs
682
        pop     es
683
        cmp     byte gfx_ok,#0
684
        jz      iloop
685
        call    gfx_setup_menu
686
iloop_gfx:
687
        push    cs
688
        pop     es
689
        call    gfx_input
690
        cmp     ax,#1
691
        jz      iloop           ; text mode
692
        mov     gfx_tmp,bx
693
        jmp     near scan_cmdline
694
695
        ; normal text message
696
iloop_10:
697
        ; keep the zero flag!
698
        mov     byte ptr (bx),#0
699
        push    cs
700
        pop     ds
701
702
iloop_20:
703
#ifdef MENU
704
        pushf
705
        call    menu_setup
706
        popf
707
#endif
708
        jnz     totxt
709
        mov     ax,showit
710
        mov     dx,showit+2
711
        mov     bx,ax
712
        or      bx,dx
713
        jz      iloop_40
714
        push    ds
715
        shl     dx,12
716
        mov     bx,ax
717
        and     bx,#0xf
718
        shr     ax,4
719
        add     ax,dx
720
        add     ax,#SYSSEG
721
        mov     ds,ax
722
        call    say
723
        pop     ds
724
        xor     ax,ax
725
        mov     showit,ax
726
        mov     showit+2,ax
727
iloop_40:
728
729
        jmp nomsg
730
731
showit:
732
        .long   0
733
734
totxt:
735
        push    #SYSSEG
736
        pop     ds
737
651
	xor	bx,bx		! display the message
738
	xor	bx,bx		! display the message
652
	call	say
739
	call	say
653
740
Lines 683-694 Link Here
683
	mov	al,(si)
770
	mov	al,(si)
684
	inc	si
771
	inc	si
685
	jmp	gotinp		! go on
772
	jmp	gotinp		! go on
686
	
687
tolist:
688
#ifdef BITMAP
689
	call	menu_exit
690
#endif
691
	br	list		! ...
692
773
693
kbinp:	mov	cx,#brto	! get a key
774
kbinp:	mov	cx,#brto	! get a key
694
	call	getkey
775
	call	getkey
Lines 715-722 Link Here
715
	je	nul		! yes -> go on
796
	je	nul		! yes -> go on
716
	cmp	al,#8		! BS ?
797
	cmp	al,#8		! BS ?
717
	je	todelch		! yes -> erase one character
798
	je	todelch		! yes -> erase one character
718
	cmp	al,#13		! CR ?
719
	je	cr		! yes -> go on
720
	cmp	al,#127		! DEL ?
799
	cmp	al,#127		! DEL ?
721
	je	todelch		! yes -> erase one character
800
	je	todelch		! yes -> erase one character
722
	ja	input		! non-printable -> ignore it
801
	ja	input		! non-printable -> ignore it
Lines 724-729 Link Here
724
	je	todell		! yes -> erase the line
803
	je	todell		! yes -> erase the line
725
	cmp	al,#24		! ^X ?
804
	cmp	al,#24		! ^X ?
726
	je	todell		! yes -> erase the line
805
	je	todell		! yes -> erase the line
806
        cmp     al,#13          ! CR ?
807
	je      cr              ! yes -> go on
727
	cmp	al,#32		! ignore non-printable characters except space
808
	cmp	al,#32		! ignore non-printable characters except space
728
	jb	input
809
	jb	input
729
	ja	noblnk		! no space -> go on
810
	ja	noblnk		! no space -> go on
Lines 766-771 Link Here
766
847
767
todelch:br	delch		! ...
848
todelch:br	delch		! ...
768
todell:	br	delline		! ...
849
todell:	br	delline		! ...
850
tolist:
851
#ifdef BITMAP
852
       call    menu_exit
853
#endif
854
       br      list            ! ...
769
855
770
! End of input, process the command line
856
! End of input, process the command line
771
857
Lines 807-812 Link Here
807
	or	al,al		! at end ?
893
	or	al,al		! at end ?
808
	jnz	cpsav		! no -> go on
894
	jnz	cpsav		! no -> go on
809
895
896
scan_cmdline:
810
	cmp	bx,#cmdline	! empty line ?
897
	cmp	bx,#cmdline	! empty line ?
811
	je	notrspc		! yes -> boot first image
898
	je	notrspc		! yes -> boot first image
812
	cmp	byte ptr (bx-1),#32 ! trailing space ?
899
	cmp	byte ptr (bx-1),#32 ! trailing space ?
Lines 864-869 Link Here
864
	je	chkvga		! yes -> look for options again
951
	je	chkvga		! yes -> look for options again
865
	or	al,al		! at end ?
952
	or	al,al		! at end ?
866
	jnz	vsknb		! no -> go on
953
	jnz	vsknb		! no -> go on
954
955
        mov     bx,gfx_tmp
956
        cmp     byte gfx_ok,#0
957
        jnz     near boot
958
867
	call	crlf		! write CR/LF
959
	call	crlf		! write CR/LF
868
	cmp	di,#cmdline+1	! empty line ?
960
	cmp	di,#cmdline+1	! empty line ?
869
emptyl:	je	bfirst		! yes -> boot first image
961
emptyl:	je	bfirst		! yes -> boot first image
Lines 1075-1080 Link Here
1075
;;	SEG_FS
1167
;;	SEG_FS
1076
	mov	word ptr par2_timeout,#0xffff	; cancel timeout
1168
	mov	word ptr par2_timeout,#0xffff	; cancel timeout
1077
;;	END_FS
1169
;;	END_FS
1170
1171
       cmp     byte gfx_ok,#0
1172
       jz      dopw_nogfx
1173
       mov     di,bx
1174
       call    gfx_password
1175
       pop     bx
1176
       jnc     toboot
1177
       jmp     near iloop
1178
dopw_nogfx:
1179
1078
	mov	bx,#msg_pw	! display a prompt
1180
	mov	bx,#msg_pw	! display a prompt
1079
	call	say
1181
	call	say
1080
1182
Lines 1245-1251 Link Here
1245
	pop	bp
1347
	pop	bp
1246
	pop	bx
1348
	pop	bx
1247
	or	cx,cx		; test CX==0 means all okay
1349
	or	cx,cx		; test CX==0 means all okay
1248
	jz	doboot
1350
        jnz     pwfail
1351
        br      doboot
1249
; fall into pwfail	
1352
; fall into pwfail	
1250
1353
1251
#else
1354
#else
Lines 1302-1317 Link Here
1302
	or	cl,cl		! no errors ?
1405
	or	cl,cl		! no errors ?
1303
	jnz	pwfail		! no -> fail
1406
	jnz	pwfail		! no -> fail
1304
	cmp	byte ptr (si),#0 ! at end ?
1407
	cmp	byte ptr (si),#0 ! at end ?
1305
	je	doboot		! yes -> continue booting
1408
        jne     pwfail          ! yes -> continue booting
1409
        br      doboot
1410
1306
#endif	/* CRC_PASSWORDS */
1411
#endif	/* CRC_PASSWORDS */
1307
1412
1308
pwfail:	mov	bx,#msg_pf	! display an error message
1413
pwfail:	mov	bx,#msg_pf	! display an error message
1309
	call	say
1414
	call	say
1310
	br	iloop		! get next input
1415
	br	iloop		! get next input
1311
1416
1417
!      Test if the monitor can display a vga mode
1418
!      mode in ax, returns ax if success, otherwise 0
1419
montest:
1420
       push    es
1421
       push    di
1422
       push    bx
1423
       push    cx
1424
       push    dx
1425
       push    ax
1426
       push    #0
1427
       pop     es
1428
       mov     di,#0xfc00
1429
       xor     cx,cx
1430
       seg     es
1431
       mov     0xfc23,cx
1432
       xor     dx,dx
1433
       mov     bx,#1
1434
       mov     ax,#0x4f15
1435
       int     0x10
1436
       cmp     ax,#0x4f
1437
       pop     ax
1438
       jnz     monno
1439
       mov     bx,ax
1440
       sub     bx,#0x100
1441
       cmp     bx,#0x1c
1442
       jnb     monno
1443
       seg     cs
1444
       mov     bl,monbits(bx)
1445
       xor     bh,bh
1446
       seg     es
1447
       mov     cx,0xfc23
1448
       or      cx,cx
1449
       jnz     nofsc
1450
       call    fscscan
1451
nofsc: and     cl,#0xfe
1452
       bt      cx,bx
1453
       jc      monok
1454
monno: xor     ax,ax
1455
monok: pop     dx
1456
       pop     cx
1457
       pop     bx
1458
       pop     di
1459
       pop     es
1460
       ret
1461
1462
monbits:
1463
       .byte   5,5,9,9,14,14,15,15,0,0,0,0,0,0,0,0
1464
       .byte   5,5,5,9,9,9,14,14,14,15,15,15
1465
1466
!      return in cx the bits for FSC notebooks.
1467
fscscan:
1468
       push    ds
1469
       push    si
1470
       push    di
1471
       push    ax
1472
       push    bx
1473
       push    #0xf000
1474
       pop     ds
1475
       xor     di,di
1476
fscnn: cmp     dword ptr (di),#0x696a7546
1477
       jnz     fscn
1478
       cmp     dword ptr 4(di),#0x20757374
1479
       jnz     fscn
1480
       mov     cx,#0x20
1481
       xor     bx,bx
1482
       mov     si,di
1483
fscsig:        lodsb
1484
       add     bl,al
1485
       dec     cx
1486
       jnz     fscsig
1487
       or      bl,bl
1488
       jnz     fscn
1489
       mov     al,23(di)
1490
       and     al,#0xf0
1491
       jnz     fscbad
1492
       mov     bl,21(di)
1493
       and     bx,#0xf0
1494
       shr     bx,#3
1495
       seg     cs
1496
       mov     cx,fscbits(bx)
1497
       jmp     fscok
1498
fscn:  add     di,#0x10
1499
       jnz     fscnn
1500
fscbad:        xor     cx,cx
1501
fscok: pop     bx
1502
       pop     ax
1503
       pop     di
1504
       pop     si
1505
       pop     ds
1506
       ret
1507
1508
fscbits:
1509
       .word   0,0x0020,0x0200,0x4000,0x8000,0x8000,0,0
1510
       .word   0x8000,0,0,0,0,0,0,0
1511
1512
!      Test if the driver can display a vga mode
1513
!      mode in ax, returns ax if success, otherwise 0
1514
vgatest:
1515
       push    es
1516
       push    di
1517
       push    bx
1518
       push    cx
1519
       push    dx
1520
       push    ax
1521
       push    #0
1522
       pop     es
1523
       mov     cx,ax
1524
       xor     ax,ax
1525
       seg     es
1526
       mov     0xfc00+0x28,ax
1527
       seg     es
1528
       mov     0xfc00+0x2a,ax
1529
       mov     di,#0xfc00
1530
       mov     ax,#0x4f01
1531
       int     0x10
1532
       cmp     ax,#0x4f
1533
       jnz     vgano
1534
       seg     es
1535
       mov     ax,0xfc00
1536
       and     ax,#0x99
1537
       cmp     ax,#0x99
1538
       jnz     vgano
1539
       seg     es
1540
       mov     ax,0xfc00+0x28
1541
       seg     es
1542
       or      ax,0xfc00+0x2a
1543
       jz      vgano
1544
       pop     ax
1545
       jmp     vgayes
1546
vgano: pop     ax
1547
       xor     ax,ax
1548
vgayes:        pop     dx
1549
       pop     cx
1550
       pop     bx
1551
       pop     di
1552
       pop     es
1553
       ret
1554
1312
! Boot the image BX points to
1555
! Boot the image BX points to
1313
1556
1314
doboot:	mov	byte ptr prechr,#61 ! switch to equal sign
1557
doboot:
1558
       call    gfx_done
1559
       mov     byte ptr prechr,#61 ! switch to equal sign
1315
	push	bx		! save image descr
1560
	push	bx		! save image descr
1316
	mov	bx,#msg_l	! say hi
1561
	mov	bx,#msg_l	! say hi
1317
	call	say
1562
	call	say
Lines 1466-1473 Link Here
1466
	jmp	vgaset
1711
	jmp	vgaset
1467
vganorm:test	bx,#FLAG_VGA
1712
vganorm:test	bx,#FLAG_VGA
1468
	jz	novga
1713
	jz	novga
1469
vgaset:	seg	es
1714
vgaset:
1470
	 mov	[VGA_SET],ax	! magic offset in the boot sector
1715
#ifdef NORMAL_VGA
1716
	cmp	ax,#INST_VGA
1717
	jnz	vganoi
1718
	mov	ax,#0x117
1719
	call	vgatest
1720
	or	ax,ax
1721
	jz	vga2
1722
	call	montest
1723
	or	ax,ax
1724
	jnz	vga3
1725
vga2:
1726
	mov	ax,#0x114
1727
	call	vgatest
1728
	or	ax,ax
1729
	jz	vga4
1730
	call	montest
1731
	or	ax,ax
1732
	jnz	vga3
1733
vga4:
1734
	mov	ax,#0x101
1735
	call	vgatest
1736
	or	ax,ax
1737
	jnz	vga3
1738
	mov	ax,#NORMAL_VGA-0x0200
1739
vga3:
1740
	add	ax,#0x200
1741
#endif
1742
vganoi: seg     es
1743
	mov	[VGA_SET],ax	! magic offset in the boot sector
1471
novga:	push	bx		! use flags (BX) later
1744
novga:	push	bx		! use flags (BX) later
1472
	test	bx,#FLAG_LOCK	! ... lock target ?
1745
	test	bx,#FLAG_LOCK	! ... lock target ?
1473
	jnz	lockit		! yup -> do it
1746
	jnz	lockit		! yup -> do it
Lines 1480-1487 Link Here
1480
	push	es
1753
	push	es
1481
	push	si
1754
	push	si
1482
1755
1483
        push    ds                      ;
1756
	push	ds                      ;
1484
        pop     es                      ;
1757
	pop	es                      ;
1485
	call	cmd_write		; write out the command line
1758
	call	cmd_write		; write out the command line
1486
1759
1487
	pop	si
1760
	pop	si
Lines 1494-1500 Link Here
1494
#endif
1767
#endif
1495
	xor	cx,cx
1768
	xor	cx,cx
1496
	seg	es
1769
	seg	es
1497
	  add	cl,[VSS_NUM]
1770
	add	cl,[VSS_NUM]
1498
;;;	or	cx,cx
1771
;;;	or	cx,cx
1499
	jnz	lsetup
1772
	jnz	lsetup
1500
	mov	cl,#SETUPSECS	! default is to load four sectors
1773
	mov	cl,#SETUPSECS	! default is to load four sectors
Lines 3231-3236 Link Here
3231
	jmp	vgaput1
3504
	jmp	vgaput1
3232
#else
3505
#else
3233
	xor	cx,cx
3506
	xor	cx,cx
3507
        mov     bh,ch
3508
        mov     bl,#10          ; bx: base (_not_ bl!)
3234
	mov	ah,cl
3509
	mov	ah,cl
3235
	test	byte ptr (si),#0xff ! no value ?
3510
	test	byte ptr (si),#0xff ! no value ?
3236
	jz	vgaerr		! yes -> error
3511
	jz	vgaerr		! yes -> error
Lines 3239-3255 Link Here
3239
	jz	vgaput		! yes -> done
3514
	jz	vgaput		! yes -> done
3240
	cmp	al,#32
3515
	cmp	al,#32
3241
	je	vgaput
3516
	je	vgaput
3242
	cmp	al,#48		! is it a digit ?  (0x30=48="0")
3517
        cmp     al,#0x61
3243
	jb	vgaerr		! no -> error
3518
        jb      vgadig_10
3244
	cmp	al,#57		! 57=0x39="9"
3519
        sub     al,#0x20        ; upper case
3245
	ja	vgaerr
3520
vgadig_10:
3246
	sub	al,#48		! cx = cx*10+al-'0'
3521
        or      cx,cx
3247
	imul	cx,#10
3522
        jnz vgadig_20
3523
        cmp     al,#0x58
3524
        jnz vgadig_20
3525
        mov     bl,#16          ; hex
3526
        jmp     vgadig
3527
vgadig_20:
3528
        cmp     al,#0x3a
3529
        jb      vgadig_30
3530
        sub     al,#7
3531
vgadig_30:
3532
        sub     al,#0x30
3533
        jb      vgaerr          ; not a digit
3534
        cmp     al,bl
3535
        jae     vgaerr          ; larger than current base
3536
        imul    cx,bx
3537
3248
	add	cx,ax
3538
	add	cx,ax
3249
	jnc	vgadig		! next one
3539
	jnc	vgadig		! next one
3250
#endif
3540
#endif
3251
3541
3252
vgaerr:	mov	bx,#msg_v	! display an error message
3542
vgaerr:
3543
        mov     bx,#msg_v       ! display an error message
3544
        cmp     byte gfx_ok,#0
3545
        jz      vgaerr_txt
3546
        lea     si,(bx+1)       ; skip initial NL
3547
        xor     di,di
3548
        mov     al,#0
3549
        mov     msg_v1,al       ; drop final NL
3550
        call    gfx_infobox
3551
        mov     byte msg_v1,#10 ; put it back
3552
        stc
3553
        ret
3554
vgaerr_txt:
3555
3253
	call	say
3556
	call	say
3254
/* ifdef HIGHMEM_MAX */
3557
/* ifdef HIGHMEM_MAX */
3255
	xor	eax,eax
3558
	xor	eax,eax
Lines 3270-3275 Link Here
3270
	.ascii	"EXT"
3573
	.ascii	"EXT"
3271
	.byte	0
3574
	.byte	0
3272
	.word	NORMAL_VGA
3575
	.word	NORMAL_VGA
3576
        .byte   0
3577
        .word   INST_VGA
3578
        .ascii  "INST"
3273
	.ascii	"NORMAL"
3579
	.ascii	"NORMAL"
3274
	.byte	0
3580
	.byte	0
3275
#endif
3581
#endif
Lines 3350-3356 Link Here
3350
	inc	si		! skip '@'
3656
	inc	si		! skip '@'
3351
	call	get_K
3657
	call	get_K
3352
	pop	edx		! restore size
3658
	pop	edx		! restore size
3353
	jc	memerr
3659
;;;     jc      memerr
3660
        je       gmmull
3661
        br      s2lbad
3354
	cmp	eax,#1024	! start : 1meg
3662
	cmp	eax,#1024	! start : 1meg
3355
	ja	gmcopy		! just copy if above
3663
	ja	gmcopy		! just copy if above
3356
	add	eax,edx		! EAX = hma/1024
3664
	add	eax,edx		! EAX = hma/1024
Lines 3360-3366 Link Here
3360
	or	bl,#0x20
3668
	or	bl,#0x20
3361
	cmp	bl,#0x20	! NUL or SPACE
3669
	cmp	bl,#0x20	! NUL or SPACE
3362
#if 0
3670
#if 0
3363
	jne	memerr
3671
;;;     jne     memerr
3672
        je      gmmull
3673
        br      s2lbad
3364
#else
3674
#else
3365
	jne	gmcopy		! allow <size>#<start> and <size>$<start>
3675
	jne	gmcopy		! allow <size>#<start> and <size>$<start>
3366
#endif
3676
#endif
Lines 3372-3377 Link Here
3372
gmnocopy:  pop	bx
3682
gmnocopy:  pop	bx
3373
	ret
3683
	ret
3374
3684
3685
#include       "gfxlogo.S"
3375
3686
3376
memerr:
3687
memerr:
3377
	mov	bx,#msg_me	! numeric conversion error
3688
	mov	bx,#msg_me	! numeric conversion error
Lines 3576-3583 Link Here
3576
3887
3577
msg_v:	.byte	10
3888
msg_v:	.byte	10
3578
	.ascii	"Valid vga values are ASK, NORMAL, EXTENDED or a "
3889
	.ascii	"Valid vga values are ASK, NORMAL, EXTENDED or a "
3579
	.ascii	"decimal number."
3890
        .ascii  "number."
3580
	.byte	10,0
3891
msg_v1:        .byte   10,0
3581
3892
3582
msg_pks:.byte	10
3893
msg_pks:.byte	10
3583
	.ascii	"Invalid hexadecimal number. - Ignoring remaining items."
3894
	.ascii	"Invalid hexadecimal number. - Ignoring remaining items."

Return to bug 40562