Trim all the extra debugging output including hexdumps, debug messages,

etc.  The only bit of debugging left is performing dual output to both
the screen and COM1.  Also, the twiddle is still disabled since it seems
to do weird things to the serial dump.  cdboot now has 880 bytes to spare.
This commit is contained in:
John Baldwin 2001-11-04 03:51:59 +00:00
parent f941b4c14e
commit 0a0fed8681

View File

@ -132,8 +132,6 @@ load_vd: push %eax # Save %eax
mov $1,%dh # One sector
mov $MEM_VOLDESC,%ebx # Destination
call read # Read it in
mov $16,%cx
call hexdump
cmpb $VD_PRIMARY,(%bx) # Primary VD?
je have_vd # Yes
pop %eax # Prepare to
@ -149,8 +147,6 @@ have_vd: mov $msg_vd,%si # Have Primary VD
#
mov $loader_path,%si # File to lookup
call lookup # Try to find it
mov $msg_lookup_done,%si
call putstr
#
# Load the binary into the buffer. Due to real mode addressing limitations
# we have to read it in in 64k chunks.
@ -263,10 +259,6 @@ pm_end: sti # Turn interrupts back on now
pop %eax # Restore saved entry point
stosl # and add it to the end of
# the arguments
mov $msg_entry2,%di
call hex32
mov $msg_entry,%si
call putstr
#
# Now we just start up BTX and let it do the rest
#
@ -311,13 +303,7 @@ lookup_done: mov $msg_lookupok,%si # Success message
# Returns: CF = 0 (success), BX = pointer to record, SX = next path item
# CF = 1 (not found), SI = preserved
#
find_file: push %si
mov $msg_startff,%si
call putstr
pop %si
movzbw DIR_LEN(%bx),%cx
call hexdump
mov DIR_EXTENT(%bx),%eax # Load extent
find_file: mov DIR_EXTENT(%bx),%eax # Load extent
xor %edx,%edx
mov DIR_EA_LEN(%bx),%dl
add %edx,%eax # Skip extended attributes
@ -334,16 +320,6 @@ ff.namelen: inc %cl # Update length
jnz ff.namelen # No, keep going
ff.namedone: dec %cl # Adjust length and save
mov %cl,name_len
mov %cl,%al
mov $msg_fflen,%di
call hex8
mov $msg_ffpath,%si
call putstr
pop %si
push %si
call putstr
mov $msg_ffpath2,%si
call putstr
pop %si # Restore
ff.load: mov rec_lba,%eax # Load LBA
mov $MEM_DIR,%ebx # Address buffer
@ -358,17 +334,9 @@ ff.scan: mov %ebx,%edx # Check for EOF
ret
ff.scan.1: cmpb $0,DIR_LEN(%bx) # Last record in block?
je ff.nextblock
movzbw DIR_LEN(%bx),%cx
call hexdump
push %si # Save
mov $msg_ffscan,%si
call putstr
movzbw DIR_NAMELEN(%bx),%si # Find end of string
ff.checkver: push %bx
mov DIR_NAME-1(%bx,%si),%al
call putc
pop %bx
cmpb $'0',DIR_NAME-1(%bx,%si) # Less than '0'?
ff.checkver: cmpb $'0',DIR_NAME-1(%bx,%si) # Less than '0'?
jb ff.checkver.1
cmpb $'9',DIR_NAME-1(%bx,%si) # Greater than '9'?
ja ff.checkver.1
@ -379,39 +347,17 @@ ff.checkver: push %bx
ff.checkver.1: movzbw DIR_NAMELEN(%bx),%cx
cmp %cx,%si # Did we find any digits?
je ff.checkdot # No
push %bx
mov DIR_NAME-1(%bx,%si),%al
call putc
pop %bx
cmpb $';',DIR_NAME-1(%bx,%si) # Check for semicolon
jne ff.checkver.2
dec %si # Skip semicolon
mov %si,%cx
mov %cl,DIR_NAMELEN(%bx) # Adjust length
push %bx
mov $'-',%al
call putc
pop %bx
jmp ff.checkdot
ff.checkver.2: mov %cx,%si # Restore %si to end of string
ff.checkdot: cmpb $'.',DIR_NAME-1(%bx,%si) # Trailing dot?
jne ff.checklen # No
push %bx
mov $'-',%al
call putc
pop %bx
decb DIR_NAMELEN(%bx) # Adjust length
ff.checklen: pop %si # Restore
push %si
mov $msg_ffscan2,%si
call putstr
mov $msg_ffcheck,%si
call putstr
lea DIR_NAMELEN(%bx),%si
call putstrl
mov $msg_ffcheck2,%si
call putstr
pop %si
movzbw name_len,%cx # Load length of name
cmp %cl,DIR_NAMELEN(%bx) # Does length match?
je ff.checkname # Yes, check name
@ -421,11 +367,7 @@ ff.nextrec: add DIR_LEN(%bx),%bl # Next record
ff.nextblock: subl $SECTOR_SIZE,rec_size # Adjust size
jnc ff.load # If subtract ok, keep going
ret # End of file, so not found
ff.checkname: push %si
mov $msg_lenmatch,%si
call putstr
pop %si
lea DIR_NAME(%bx),%di # Address name in record
ff.checkname: lea DIR_NAME(%bx),%di # Address name in record
push %si # Save
repe cmpsb # Compare name
jcxz ff.match # We have a winner!
@ -447,24 +389,6 @@ read: push %si # Save
mov %ax,edd_addr+0x2 # and store
read.retry: #call twiddle # Entertain the user
push %dx # Save
push %di # DEBUG: dump packet
push %bx
mov %dh,%al # Length
mov $dump_len,%di
call hex8
mov edd_addr+0x2,%ax # Seg
mov $dump_seg,%di
call hex16
mov edd_addr,%ax # Offset
mov $dump_offset,%di
call hex16
mov edd_lba,%eax # LBA
mov $dump_lba,%di
call hex32
mov $dump_packet,%si # Display
call putstr
pop %bx
pop %di
mov $edd_packet,%si # Address Packet
mov %dh,edd_len # Set length
mov drive,%dl # BIOS Device
@ -488,67 +412,6 @@ error: call putstr # Display message
halt: hlt
jmp halt # Spin
#
# Dump CX bytes from memory at [BX].
#
hexdump: push %ax # Save
push %bx # Save
push %dx # Save
push %si # Save
push %di # Save
mov %bx,%si # Where to read from
hd.line: mov $16,%dx # Bytes per line
push %si # Save offset
push %cx # Save
push %dx # counts
mov $hex_line,%di
mov %si,%ax # Format hex
call hex16 # offset
inc %di
hd.hexloop: jcxz hd.hexblank # Are we done yet?
lodsb # Read
call hex8 # Hexify
inc %di
dec %cx # Update total count
dec %dx # and per-line count
jnz hd.hexloop # Next char
jmp hd.raw # Second half of line
hd.hexblank: mov $' ',%al # Put spaces as
hd.hb.loop: stosb # placeholders
stosb
inc %di
dec %dx # Just do per-line count
jnz hd.hb.loop # Next blank
hd.raw: pop %dx # Restore
pop %cx # counts
pop %si # Restart input
inc %di # Skip pipe char
hd.rawloop: jcxz hd.rawblank # Done yet?
lodsb # Read
cmp $0x20,%al # Use '.' for
jge hd.rawok # special
mov $'.',%al # characters
hd.rawok: stosb
dec %cx
dec %dx
jnz hd.rawloop # Next char
jmp hd.outline # Next line
hd.rawblank: mov $' ',%al # Space as placeholder
mov %dx,%cx # Fill rest
rep stosb # of line
hd.outline: push %si # Save
mov $hex_line,%si # Now spit it out
call putstr
pop %si # Restore
jcxz hd.ret # Return if done
jmp hd.line # Next line
hd.ret: pop %di # Restore
pop %si # Restore
pop %dx # Restore
pop %bx # Restore
pop %ax # Restore
ret
#
# Display a null-terminated string.
#
@ -563,23 +426,6 @@ putstr.load: lodsb # load %al from %ds:(%si)
putstr.putc: call putc # output char
jmp putstr.load # next char
#
# Print out length-based string from [SI].
#
# Trashes: AX, SI
#
putstrl: push %bx # Save
push %cx # Save
lodsb
movzbw %al,%cx # Length
jcxz putstrl.ret # Skip if empty
putstrl.loop: lodsb # Read char
call putc # Display
loop putstrl.loop # Loop
putstrl.ret: pop %cx # Restore
pop %bx # Restore
ret
#
# Display a single char.
#
@ -630,14 +476,8 @@ seta20.2: in $0x64,%al # Get status
ret # To caller
#
# Convert EAX, AX, or AL to hex, saving the result to [EDI].
# Convert AL to hex, saving the result to [EDI].
#
hex32: pushl %eax # Save
shrl $0x10,%eax # Do upper
call hex16 # 16
popl %eax # Restore
hex16: call hex16.1 # Do upper 8
hex16.1: xchgb %ah,%al # Save/restore
hex8: pushl %eax # Save
shrb $0x4,%al # Do upper
call hex8.1 # 4
@ -723,28 +563,3 @@ msg_load2big: .asciz "File too big\r\n"
loader_path: .asciz "/BOOT/LOADER"
twiddle_chars: .ascii "|/-\\"
msg_entry: .ascii "Entry point: "
msg_entry2: .asciz "00000000\r\n"
msg_lookup_done:.asciz "Lookup returned\r\n"
msg_startff: .asciz "\r\nStarting find_file\r\n"
msg_ffpath: .asciz "Path = \""
msg_ffpath2: .ascii "\" Length = "
msg_fflen: .asciz "00\r\n"
msg_lenmatch: .asciz "ff: Length matched\r\n"
msg_ffcheck: .asciz "ff: Checking name: "
msg_ffscan2:
msg_ffcheck2: .asciz "\r\n"
msg_ffscan: .asciz "ff: Scanning name: "
dump_packet: .ascii "Len "
dump_len: .ascii "00 Addr "
dump_seg: .ascii "0000:"
dump_offset: .ascii "0000 LBA "
dump_lba: .asciz "00000000\r\n"
dump_bx: .ascii "bx = "
hex_bx: .asciz "0000\r\n"
hex_line: .ascii "0000:00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 "
.asciz "|................|\r\n"