Files
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

92 lines
2.1 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;****************************************************************
;* *
;* BOOT SECTOR FOR IBM PC *
;* *
;****************************************************************
min_mem equ 160 ;minimum memory in K
load_track_segment equ 2600H ;at 152K mark
;Check for at least 160K being present in the IBM PC.
;Use last 8K of 160K minimum memory for loader.
;Since track is 4K we have 4K extra past the Loader for
;disk buffer space and other unitialized storage
;used by the Loader.
;Note: that wherever it is decided to place the loader, the IBM PC
;cannot read over a 64K page boundary.
;the command:
;GENCMD BOOT 8080
;is used for this module
bw_video_ram equ 0b000h ;where to print an
color_video_ram equ 0b800h ;error message
cseg load_track_segment + 20H ;add 20H to get to sector 2
loader: ;where the Loader starts
cseg 0
org 0 ;The IBM ROM sets up
;SS=30H and SP is 80H: stack is in
;the interrupt vectors.
int 12H ;get memory size
cmp ax,min_mem
jnb get_track_0
jmps mem_error
get_track_0:
xor bx,bx ;set up call to ROM diskette read
mov ax,load_track_segment
mov es,ax ;ES:BX transfer location
mov ax,0208h ;AH=2=read,AL=8=sectors to read
mov cx,0001h ;CH=0=track,CL=1=sector
mov dx,0000h ;DH=0=head #,DL=0=drive #
int 13H ;call ROM diskette entry
jnc track_ok
jmps track_error
track_ok:
jmpf loader
mem_error:
mov cx,length mem_msg
mov si,offset mem_msg
jmps prt_msg
track_error:
mov cx,length trk_msg
mov si,offset trk_msg
;jmps prt_msg
prt_msg:
mov ax,bw_video_ram
int 11H ;get equipment information
and al,00110000b ;get video bits
cmp al,30H
je do_msg
mov ax,color_video_ram
do_msg:
mov es,ax
mov ax,cs
mov ds,ax
xor di,di
mov ah,07H ;normal display attribute
prt_loop:
lodsb
stosw
loop prt_loop
cli
hlt
last_code_offset equ offset $
dseg
org last_code_offset
mem_msg db 'Not enough memory present for loader'
trk_msg db 'Can''t read boot track'
org 512 - 1 ;force even sector size
db 0