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
/
CPMUG025.ARK
/
FBOOT24.ASM
< prev
next >
Wrap
Assembly Source File
|
1984-04-29
|
2KB
|
84 lines
MSIZE EQU 24 ;MEMORY SIZE.
DCOM EQU 0F8H ;DISK CO]MAND PORT.
DSTAT EQU DCOM ;DISK STATUS PORT.
TRACK EQU DCOM+1 ;1771 TRACK REGISTER.
SECT EQU DCOM+2 ;1771 SECTOR REGISTER.
DDATA EQU DCOM+3 ;1771 DATA PORT.
WAIT EQU DCOM+4 ;INPUT = WAIT.
CBASE EQU (MSIZE-17)*1024
CPMB EQU CBASE+2900H ;WHERE CPM STARTS.
BOOTE EQU CBASE+3E00H ;WHERE CBIOS STARTS.
NSECTS EQU 51 ;NUMBER OF SECTORS TO LOAD.
ORG 0H ;START OF COLDSTART LOADER.
BOOT: LXI SP,100H ;SET STACK POINTER.
BOOT1: LXI B,2 ;SET B=0, C=2.
MVI D,NSECTS ;D = NUMBER OF SECTORS TO LOAD.
LXI H,CPMB ;H&L = CPM STARTING ADDRESS.
MOV A,C ;GET SECTOR NUMBER (2) IN A.
RBLK: CALL READ ;READ A SECTOR.
RBLK1: JNZ ERROR ;HOP OUT IF ERROR.
DCR D ;COUNT DOWN NUMBER OF SECTORS.
JZ BOOTE ;HOP OUT IF DONE.
INR C ;INCREMENT SECTOR NUMBER.
MOV A,C ;MOVE IT INTO REGISTER A.
CPI 27 ;IF IT'S LESS THAN 27,
JC RBLK2 ;KEEP ON READING.
MVI C,1 ;OTHERWISE SET SECTOR = 1.
MVI A,40H
OUT DCOM
IN WAIT
MVI A,1
OUT WAIT
MVI A,72H
OUT WAIT
IN WAIT
MVI A,0F2H
OUT WAIT
INR B
MOV A,B
OUT TRACK
MOV A,C
JMP RBLK
;
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 07DH
JMP 0
END