mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 01:44:21 +00:00
Upload
Digital Research
This commit is contained in:
96
MPM OPERATING SYSTEMS/MPM II/MPM II SOURCE/CONTROL/BOOT.ASM
Normal file
96
MPM OPERATING SYSTEMS/MPM II/MPM II SOURCE/CONTROL/BOOT.ASM
Normal file
@@ -0,0 +1,96 @@
|
||||
; MDS-800 Cold Start Loader for MP/M 2.0
|
||||
;
|
||||
; VERSION 2.0 09/1481
|
||||
;
|
||||
mpmldrb equ 0100h ;base of MP/M loader
|
||||
;
|
||||
org 3000h ;loaded here by hardware
|
||||
;
|
||||
ntrks equ 2 ;tracks to read
|
||||
mpmldr0 equ 25 ;# on track 0
|
||||
mpmldr1 equ 26 ;# on track 1
|
||||
;
|
||||
rmon80 equ 0ff0fh ;restart location for mon80
|
||||
base equ 078h ;'base' used by controller
|
||||
rtype equ base+1 ;result type
|
||||
rbyte equ base+3 ;result byte
|
||||
reset equ base+7 ;reset controller
|
||||
;
|
||||
dstat equ base ;disk status port
|
||||
ilow equ base+1 ;low iopb address
|
||||
ihigh equ base+2 ;high iopb address
|
||||
bsw equ 0ffh ;boot switch
|
||||
readf equ 4h ;disk read function
|
||||
stack equ 100h ;use end of boot for stack
|
||||
;
|
||||
rstart:
|
||||
lxi sp,stack;in case of call to mon80
|
||||
; clear disk status
|
||||
in rtype
|
||||
in rbyte
|
||||
; check if boot switch is off
|
||||
coldstart:
|
||||
in bsw
|
||||
ani 02h ;switch on?
|
||||
jnz coldstart
|
||||
; clear the controller
|
||||
out reset ;logic cleared
|
||||
;
|
||||
;
|
||||
mvi b,ntrks ;number of tracks to read
|
||||
lxi h,iopb0
|
||||
;
|
||||
start:
|
||||
;
|
||||
; read first/next track into cpmb
|
||||
mov a,l
|
||||
out ilow
|
||||
mov a,h
|
||||
out ihigh
|
||||
wait0: in dstat
|
||||
ani 4
|
||||
jz wait0
|
||||
;
|
||||
; check disk status
|
||||
in rtype
|
||||
ani 11b
|
||||
cpi 2
|
||||
;
|
||||
jnc rstart ;retry the load
|
||||
;
|
||||
in rbyte ;i/o complete, check status
|
||||
; if not ready, then go to mon80
|
||||
ral
|
||||
cc rmon80 ;not ready bit set
|
||||
rar ;restore
|
||||
ani 11110b ;overrun/addr err/seek/crc/xxxx
|
||||
;
|
||||
jnz rstart ;retry the load
|
||||
;
|
||||
;
|
||||
lxi d,iopbl ;length of iopb
|
||||
dad d ;addressing next iopb
|
||||
dcr b ;count down tracks
|
||||
jnz start
|
||||
;
|
||||
;
|
||||
; jmp to the MP/M loader
|
||||
jmp mpmldrb
|
||||
;
|
||||
; parameter blocks
|
||||
iopb0: db 80h ;iocw, no update
|
||||
db readf ;read function
|
||||
db mpmldr0 ;# sectors to read trk 0
|
||||
db 0 ;track 0
|
||||
db 2 ;start with sector 2, trk 0
|
||||
dw mpmldrb ;start at base of bdos
|
||||
iopbl equ $-iopb0
|
||||
;
|
||||
iopb1: db 80h
|
||||
db readf
|
||||
db mpmldr1 ;sectors to read on track 1
|
||||
db 1 ;track 1
|
||||
db 1 ;sector 1
|
||||
dw mpmldrb+mpmldr0*128 ;base of second read
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user