home *** CD-ROM | disk | FTP | other *** search
- ; 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
-