home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG040.ARK
/
PBOOT.ASM
< prev
next >
Wrap
Assembly Source File
|
1984-04-29
|
2KB
|
121 lines
; PASCAL BOOT LOADER
;
; S.J.SINGER (714)-780-8853
; GEORGE BOLTHOFF
;
;This is a modification of TARBELL'S cold start loader.
;It loads in the PASCAL bios and PINIT ,the PASCAL init
;program.
; The program runs at 0000h and loads 20 sectors from
;the disk,starting with sector 2.
;
;
FALSE EQU 00 ;LOGICAL FALSE
TRUE EQU NOT FALSE
;
; THESE SWITCHES SET TO FORMAT CODE IN LOCATION 7FH
DBLDEN EQU FALSE
SEC512 EQU FALSE
QUAD EQU FALSE
;
;
MSIZE EQU 64 ;MEMORY SIZE IN DECIMAL KB.
DISK EQU 0F8H ;BASE ADDR FOR DISK I/O PORTS
DCOM EQU DISK
DSTAT EQU DISK
TRACK EQU DISK+1
SECT EQU DISK+2
DDATA EQU DISK+3
WAIT EQU DISK+4
BIOSSZ EQU 1536 ;12 SECTORS
PINITSZ EQU 1024 ;8 SECTORS
LOADP EQU MSIZE*1024-BIOSSZ-PINITSZ
NSECTS EQU 20 ;NUMBER OF SECTORS TO LOAD
;
;
ORG 0
;
BOOT: LXI SP,100H
BOOT1: LXI B,2 ;B=TRACK, C=SECTOR
MVI D,NSECTS ;D CONTAINS SECTOR COUNT
LXI H,LOADP ;STARTING LOAD ADDR FOR PROGRAM
RBLK MOV A,B
OUT DDATA
MVI A,13H
OUT DCOM ;SEEK TRACK 0
IN WAIT
ORA A
MVI A,1
JM ERROR
IN DSTAT
ANI 91H
JNZ ERROR
MOV A,C
CALL READ
RBLK1: JNZ ERROR
DCR D
HALT: JZ LOADP
INR C
RBLK2: MOV A,C
CALL READ1
JMP RBLK1
;
;
READ1: OUT SECT
IN DSTAT
RRC
MVI A,1
JC RERR
MVI A,88H
JMP READE
;
READ: OUT SECT
IN DSTAT
RRC
MVI A,1
JC RERR
MVI A,8CH
READE: OUT DCOM
RLOOP: IN WAIT
ORA A
JP RDONE
IN DDATA
MOV M,A
INX H
JMP RLOOP
;
RDONE: IN DSTAT
RERR: ANI 9DH
RET
;
;
ERROR: CMA
OUT 0FFH
HLT
;
;
ORG 7DH
RST 0
;
IF SEC512
ORG 7FH
DB 22H
ENDIF
;
IF DBLDEN
ORG 7FH
DB 12H
ENDIF
;
IF QUAD
ORG 7FH
DB 92H
ENDIF
;
IF NOT DBLDEN AND NOT SEC512 AND NOT QUAD
ORG 7FH
DB 20H
ENDIF
;
END