mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 09:54:20 +00:00
Upload
Digital Research
This commit is contained in:
63
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/-CPM3ON2.NOT
Normal file
63
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/-CPM3ON2.NOT
Normal file
@@ -0,0 +1,63 @@
|
||||
*** BAMDUA SPECIAL SERIES ***
|
||||
FOR EXPERIENCED DEVELOPERS ONLY vol.DV6
|
||||
Morrow MD DSDD - Smith Disk 6 of 10
|
||||
________________________________________
|
||||
Bill's Drive A2: Generic CP/M+ for CP/M2
|
||||
w/ GEN.SUB Copyright Bill Smith
|
||||
note: the files on this -- user area/library/disk --
|
||||
are property of bill smith, not Morrow Designs,
|
||||
Copyright Bill Smith 1985 All Rights Reserved
|
||||
|
||||
Files 31/188k
|
||||
BDOS3 .SPR 10k JNK .COM 4k
|
||||
BIOS3 .SPR 2k LDRBIOS .ASM 14k
|
||||
BIOS3 .SYM 2k LDRBIOS .REL 2k
|
||||
CCP .COM 4k LDRBIOS .SYM 2k
|
||||
CPM2 .COM 2k LIB .COM 8k
|
||||
CPM3 .SYS 10k LINK .COM 16k
|
||||
CPMLDR .COM 4k R .COM 0k
|
||||
CPMLDR .REL 4k READ .ME 2k
|
||||
CPMLDR .SYM 2k RMAC .COM 14k
|
||||
DATE .COM 4k SBIOS .ASM 4k
|
||||
DUMMY .REL 2k SCB .ASM 2k
|
||||
GBIOS .ASM 14k SCB .REL 2k
|
||||
GBIOS .SYM 2k SCB .SYM 2k
|
||||
GEN .SUB 2k SID .COM 8k
|
||||
GENCPM .COM 22k XREF .COM 16k
|
||||
HBIOS .ASM 6k
|
||||
PROGRAM ID:
|
||||
GBIOS3.ASM
|
||||
GENERIC LOADER AND BIOS FOR CP/M PLUS
|
||||
FOR CP/M-80 V2.2 SYSTEMS UNBANKED NO HASHING
|
||||
BIOS PERFORMS BLOCKING/DEBLOCKING
|
||||
|
||||
ORGANIZATIONAL COMMENTARY
|
||||
This BIOS is designed to be the user's first step
|
||||
in making an upgrade from CP/M-80 v2.2 to CP/M Plus v3.0.
|
||||
This BIOS will function properly in most CP/M-2 systems,
|
||||
even those with the BIOS in PROM.
|
||||
|
||||
FUNCTION:
|
||||
This PROGRAM implements an UNBANKED, NON-HASHED,
|
||||
UNBUFFERED BIOS for CP/M Plus version 3.0.
|
||||
|
||||
METHOD:
|
||||
CP/M Plus allows many levels of sophistocation in
|
||||
the implementation of the BIOS. At the highest levels,
|
||||
the BIOS allows CP/M Plus to manage a potentially large
|
||||
memory pool which acts like an instant access disk drive,
|
||||
a substantial performence enhancement. At the lowest level,
|
||||
the performance of CP/M Plus is the same as that of CP/M-80
|
||||
version 2.2. This interface program is a simple implementation
|
||||
of a CP/M Plus BIOS which operates as a parasite to the user's
|
||||
existing BIOS for CP/M-80 version 2.2.
|
||||
|
||||
PURPOSE:
|
||||
This BIOS allows the CP/M-80 v2.2 user to easily
|
||||
upgrade to CP/M Plus v3.0 and enjoy its logical enhancements
|
||||
at the same level of performance he has enjoyed with v2.2.
|
||||
This BIOS can be an end-point since system performance
|
||||
will be satisfactory. For users who own the hardware
|
||||
required to implement hashing and buffering, this BIOS
|
||||
will serve as a welcome starting point for further enhancement.
|
||||
|
||||
56
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/-REQUEST.HIS
Normal file
56
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/-REQUEST.HIS
Normal file
@@ -0,0 +1,56 @@
|
||||
-REQUEST.HIS: Requests re: further development
|
||||
of CPM3ON2.LBR by others
|
||||
Ilbert Butler 04/20/88
|
||||
|
||||
The files in CPM3ON2 were created by Bill Smith, while employed
|
||||
at Morrow Designs & writing the BIOS & modifying the CP/M 3
|
||||
operating system for Morrow MD hard disk computers. His idea was
|
||||
to upgrade all existing unbanked CP/M 2.2 systems to CP/M 3.0.
|
||||
This idea fell by the wayside, when Morrow turned all its atten-
|
||||
tion to MS-DOS & its financial troubles. Digital Research, Inc.
|
||||
was offered & declined to purchase this developmental work.
|
||||
|
||||
The original CPM3ON2 files are essentially a disk 'dump' of Bill
|
||||
Smith's work, which he placed in the public domain, subject to
|
||||
his copyright. For someone just doing a disk dump, this may seem
|
||||
presumptuous, BUT if there is any further development on this,
|
||||
could we PLEASE have respect for copyright, an orderly and intel-
|
||||
ligible naming and numbering of versions, and reference to a com-
|
||||
mon set of CP/M 3 utilities? . . . as follows:
|
||||
|
||||
0) Include Bill Smith copyright notice in all subsequent ver-
|
||||
sions, add your own, IF you have made a SIGNIFICANT addition
|
||||
or extension of code, not just modification & reassembly.
|
||||
|
||||
1) Later versions of a GENERIC CPM3ON2, i.e., for all CP/M 2.2
|
||||
computers, as a source, can be consecutively numbered by
|
||||
letters of the alphabet, e.g., CPM3ON2A, CPM3ON2B, etc. It
|
||||
seems unlikely there would be more than 26 generic versions.
|
||||
Most will be for specific brand hardware & ROM BIOS.
|
||||
|
||||
2) Versions intended for (or tested only on) particular hard-
|
||||
ware brand & ROM BIOS should be differently named:
|
||||
3ON2<brand initials>.<ARK or LBR>
|
||||
E.g., 3ON2KP for Kaypro, 3ON2MD for Morrow MD, 3ON2OS for
|
||||
CP/M 2 Osbornes, etc., also numbered by version.
|
||||
|
||||
3) Versions which require (or have been tested and run only
|
||||
under) ZCPR3 should be separately named and numbered, e.g:
|
||||
Z3PON2x = Z3PLUS on CP/M 2 system w/CPM 3 BDOS
|
||||
Z3DON2x = ZRDOS (if any) replacing CP/M3 BDOS and run-
|
||||
ning on CP/M 2 system
|
||||
|
||||
4) Check for current version number on BAMDUA (Morrow) RCP/M
|
||||
PBBS, 415-654-3882. Registration & upgrade of privileges is
|
||||
automatic (in the absence of system abuse). Avoid different
|
||||
versions with the same name & version number.
|
||||
|
||||
5) In order to give users the opportunity to acquire system
|
||||
utilities LEGALLY, and have them referring to the same set
|
||||
of system files, I suggest we point out that a LARGE number
|
||||
of disk sets of CP/M 3 system software are on the surplus
|
||||
market for Osborne Executive, Morrow MD & Commodore 128.
|
||||
Versions should use one of these 3, identify which one is
|
||||
used, and have any overlays used to modify them come with
|
||||
instructions for use with MLOAD.
|
||||
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/BDOS3.SPR
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/BDOS3.SPR
Normal file
Binary file not shown.
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/BIOS3.SPR
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/BIOS3.SPR
Normal file
Binary file not shown.
6
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/BIOS3.SYM
Normal file
6
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/BIOS3.SYM
Normal file
@@ -0,0 +1,6 @@
|
||||
FE22 @CIVEC FE24 @COVEC FE28 @AOVEC FE2A @LOVEC
|
||||
FE35 @BNKBF FE3C @CRDMA FE3E @CRDSK FE43 @FX
|
||||
FE41 @RESEL FE3F @VINFO FE44 @USRCD FE4B @ERMDE
|
||||
FE58 @DATE FE5A @HOUR FE5B @MIN FE5C @SEC
|
||||
FE62 @MXTPA FE26 @AIVEC
|
||||
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CCP.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CCP.COM
Normal file
Binary file not shown.
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPM2.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPM2.COM
Normal file
Binary file not shown.
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPM3.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPM3.COM
Normal file
Binary file not shown.
7
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPM3.SYM
Normal file
7
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPM3.SYM
Normal file
@@ -0,0 +1,7 @@
|
||||
FE22 @CIVEC FE24 @COVEC FE26 @AIVEC FE28 @AOVEC
|
||||
FE2A @LOVEC FE35 @BNKBF FE3C @CRDMA FE3E @CRDSK
|
||||
FE3F @VINFO FE41 @RESEL FE43 @FX FE44 @USRCD
|
||||
FE4A @MLTIO FE4B @ERMDE FE51 @ERDSK FE54 @MEDIA
|
||||
FE57 @BFLGS FE58 @DATE FE5A @HOUR FE5B @MIN
|
||||
FE5C @SEC FE62 @MXTPA
|
||||
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPM3.SYS
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPM3.SYS
Normal file
Binary file not shown.
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPMLDR.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPMLDR.COM
Normal file
Binary file not shown.
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPMLDR.REL
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPMLDR.REL
Normal file
Binary file not shown.
6
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPMLDR.SYM
Normal file
6
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/CPMLDR.SYM
Normal file
@@ -0,0 +1,6 @@
|
||||
FE22 @CIVEC FE24 @COVEC FE26 @AIVEC FE28 @AOVEC
|
||||
FE2A @LOVEC FE35 @BNKBF FE3C @CRDMA FE3E @CRDSK
|
||||
FE43 @FX FE41 @RESEL FE3F @VINFO FE44 @USRCD
|
||||
FE4B @ERMDE FE58 @DATE FE5A @HOUR FE5B @MIN
|
||||
FE5C @SEC FE62 @MXTPA
|
||||
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/DATE.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/DATE.COM
Normal file
Binary file not shown.
4
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/DUMMY.ASM
Normal file
4
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/DUMMY.ASM
Normal file
@@ -0,0 +1,4 @@
|
||||
cseg
|
||||
ds 400h
|
||||
end
|
||||
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/DUMMY.REL
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/DUMMY.REL
Normal file
Binary file not shown.
2
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/DUMMY.SYM
Normal file
2
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/DUMMY.SYM
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
506
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/GBIOS.ASM
Normal file
506
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/GBIOS.ASM
Normal file
@@ -0,0 +1,506 @@
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; PROGRAM ID: GBIOS3.ASM
|
||||
; GENERIC LOADER AND BIOS FOR CP/M PLUS
|
||||
; FOR CP/M-80 V2.2 SYSTEMS
|
||||
; UNBANKED
|
||||
; NO HASHING
|
||||
; BIOS PERFORMS BLOCKING/DEBLOCKING
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; ORGANIZATIONAL COMMENTARY
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
; This BIOS is designed to be the user's first step
|
||||
;in making an upgrade from CP/M-80 v2.2 to CP/M Plus v3.0.
|
||||
;This BIOS will function properly in most CP/M-2 systems,
|
||||
;even those with the BIOS in PROM.
|
||||
;
|
||||
;FUNCTION:
|
||||
; This PROGRAM implements an UNBANKED, NON-HASHED,
|
||||
;UNBUFFERED BIOS for CP/M Plus version 3.0.
|
||||
;
|
||||
;METHOD:
|
||||
; CP/M Plus allows many levels of sophistocation in
|
||||
;the implementation of the BIOS. At the highest levels,
|
||||
;the BIOS allows CP/M Plus to manage a potentially large
|
||||
;memory pool which acts like an instant access disk drive;
|
||||
;a substantial performence enhancement. At the lowest level,
|
||||
;the performance of CP/M Plus is the same as that of CP/M-80
|
||||
;version 2.2. This interface program is a simple implementation
|
||||
;of a CP/M Plus BIOS which operates as a parasite to the user's
|
||||
;existing BIOS for CP/M-80 version 2.2.
|
||||
;
|
||||
;PURPOSE:
|
||||
; This BIOS allows the CP/M-80 v2.2 user to easily
|
||||
;upgrade to CP/M Plus v3.0 and enjoy its logical enhancements
|
||||
;at the same level of performance he has enjoyed with v2.2.
|
||||
;This BIOS can be an end-point since system performance
|
||||
;will be satisfactory. For users who own the hardware
|
||||
;required to implement hashing and buffering, this BIOS
|
||||
;will serve as a welcome starting point for further enhancement.
|
||||
;
|
||||
;ORGANIZATION:
|
||||
; This BIOS is organized as follows:
|
||||
;
|
||||
; CONSTANTS
|
||||
; CONFIGURATION CONSTANTS AND CONDITIONS ***
|
||||
; EXTERNAL REFERENCES
|
||||
; PUBLIC DECLARATIONS (NULL)
|
||||
; RAM DEFINITIONS
|
||||
; CP/M 2.2 LINKAGE EQUATES
|
||||
;
|
||||
; CP/M PLUS JUMP TABLE
|
||||
; INITIALIZATION PROCESSES
|
||||
; LOCAL AND NULL PROCESSES
|
||||
; SIMPLE INDEXED PROCESSES
|
||||
; COMPLEX INDEXED PROCESSES
|
||||
; LOCAL SUBROUTINES
|
||||
; INITIALIZED STORAGE
|
||||
; UNINITIALIZED STORAGE
|
||||
; END
|
||||
;
|
||||
; *** edit these
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; OPERATIONAL COMMENTARY
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; Digital Research owes much of its success to the
|
||||
;foresight of its operating system designers who have seen
|
||||
;fit to make their products upward compatible with one
|
||||
;another. CP/M Plus is no exception, and so it is no
|
||||
;surprise that the CP/M Plus BIOS shares many constructs
|
||||
;with the earlier CP/M-80 v2.2.
|
||||
;
|
||||
; The CP/M Plus BIOS implements 32 entry points in
|
||||
;its jump table. Of these, the first 17 correspond to the
|
||||
;17 entries in the CP/M-80 v2.2 jump table. 14 of these
|
||||
;are treated as identical to those in 2.2. These index
|
||||
;directly into the 2.2 jump table. The remaining three in the
|
||||
;2.2 set are BOOT, which is null, WBOOT, which loads CCP.COM,
|
||||
;and SELDSK which creates all of the necessary disk data
|
||||
;structures required by CP/M Plus based on those in the 2.2 BIOS.
|
||||
;The remaining 15 entries in the CP/M Plus BIOS, with the
|
||||
;single exception of MOVE, are implemented in one of
|
||||
;the following ways:
|
||||
;
|
||||
; 1.) null, simply return.
|
||||
; 2.) nearly null, do something really simple.
|
||||
; 3.) tell a white lie.
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; constants
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
true equ -1
|
||||
false equ not true
|
||||
jmpop equ 0c3h
|
||||
getch equ 1
|
||||
print equ 9
|
||||
open equ 15
|
||||
readseq equ 20
|
||||
dma equ 26
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; configuration constants and conditions
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
drives equ 5 ;number of drives supported
|
||||
bios equ 0f200h ;address of your bios
|
||||
;ldrbios equ true
|
||||
ldrbios equ false
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; external references
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
extrn @civec, @covec, @aovec, @lovec, @bnkbf
|
||||
extrn @crdma
|
||||
extrn @crdsk, @fx, @resel, @vinfo, @usrcd, @ermde
|
||||
extrn @date, @hour, @min, @sec, @mxtpa
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; public declarations
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
;currently null
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; ram definitions
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
iobyte equ 3
|
||||
tpa equ 100h
|
||||
dffcb equ 5ch
|
||||
stack80 equ 100h
|
||||
bootram equ 0
|
||||
bdos equ 5
|
||||
ccp equ tpa
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; cp/m v2.2 linkage equates
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
boot80 equ 0
|
||||
warm80 equ 3
|
||||
cnst80 equ 6
|
||||
cnin80 equ 9
|
||||
cnot80 equ 12
|
||||
list80 equ 15
|
||||
punc80 equ 18
|
||||
redr80 equ 21
|
||||
home80 equ 24
|
||||
slds80 equ 27
|
||||
strk80 equ 30
|
||||
ssec80 equ 33
|
||||
sdma80 equ 36
|
||||
read80 equ 39
|
||||
writ80 equ 42
|
||||
lsta80 equ 45
|
||||
sctr80 equ 48
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; cp/m plus version 3.0 jump table
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
cseg
|
||||
; org (bios-(200h+64*drives)) and 0ff00h
|
||||
;
|
||||
jmp boot ;arrive here from cold start load
|
||||
warmpt:
|
||||
jmp wboot ;arrive here for warm start
|
||||
jmp const ;return console input status
|
||||
jmp conin ;read console character
|
||||
jmp conout ;write conlole character
|
||||
jmp list ;write list character
|
||||
jmp auxout ;write aux character
|
||||
jmp auxin ;read aux character
|
||||
jmp home ;move to track zero on selected drive
|
||||
jmp seldsk ;select disk drive
|
||||
jmp settrk ;set track number
|
||||
jmp setsec ;set sector number
|
||||
jmp setdma ;set DMA address
|
||||
jmp read ;read selected sector
|
||||
jmp write ;write selected sector
|
||||
jmp listst ;return list device status
|
||||
jmp sectrn ;translate logical to physical sector number
|
||||
jmp conost ;return console output status
|
||||
jmp auxist ;return aux device input status
|
||||
jmp auxost ;return aux device output status
|
||||
jmp devtbl ;return address of character i/o table
|
||||
jmp devini ;init character i/o devices
|
||||
jmp drvtbl ;return address of disk drive table
|
||||
jmp multio ;set number of consec. sec. to read/write
|
||||
jmp flush ;flush user [de]blocking buffers
|
||||
jmp move ;copy memory to memory
|
||||
jmp xmove ;set banks for next move
|
||||
jmp selmem ;select memory bank
|
||||
jmp setbnk ;set bank for next DMA
|
||||
jmp userf ;reserved for me.
|
||||
jmp wboot
|
||||
jmp wboot ;reserved for DRI
|
||||
;
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; initialization processes
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
boot:
|
||||
if ldrbios
|
||||
ret
|
||||
endif
|
||||
;boot is null, falls thru to wboot
|
||||
wboot:
|
||||
lxi sp,stack80
|
||||
;
|
||||
; initialize low memory jumps
|
||||
;
|
||||
lxi h,warmpt
|
||||
shld bootram+1
|
||||
lhld @mxtpa
|
||||
shld bdos+1
|
||||
mvi a,jmpop
|
||||
sta bootram
|
||||
sta bdos
|
||||
;
|
||||
; load ccp.com into tpa
|
||||
;
|
||||
mvi b,36
|
||||
lxi h,dffcb
|
||||
call clear ;clear fcb area in low ram
|
||||
lxi h,dffcb
|
||||
mvi m,1 ;drive a:
|
||||
inx h
|
||||
lxi d,ccpstg ;'ccp com'
|
||||
lxi b,11 ;length of a file name
|
||||
call move ;move filename to fcb
|
||||
lxi d,dffcb
|
||||
mvi c,open
|
||||
call bdos ;open ccp.com
|
||||
ora a
|
||||
jnz operr ;if no error (
|
||||
lxi d,tpa ;load into tpa
|
||||
;
|
||||
; the load loop
|
||||
;
|
||||
ldloop:
|
||||
push d ;the current dma address
|
||||
mvi c,dma
|
||||
call bdos ;set dma for next 128 byte read
|
||||
lxi d,dffcb
|
||||
mvi c,readseq
|
||||
call bdos ;read file data to tpa ram
|
||||
ora a ;test for complete
|
||||
pop d ;restore dma address
|
||||
jnz gocpm ;exit when past file end
|
||||
lxi h,128 ;advance dma address 128 bytes
|
||||
dad d
|
||||
xchg
|
||||
jmp ldloop ;loop
|
||||
;
|
||||
;
|
||||
gocpm:
|
||||
cpi 1 ;only legal exit = past end of file
|
||||
jnz rderr
|
||||
jmp ccp ;now turn it loose
|
||||
;
|
||||
;
|
||||
operr:
|
||||
lxi d,opnmsg ;"BIOS can't open CCP.COM"
|
||||
jmp errs
|
||||
rderr:
|
||||
lxi d,errmsg ;"BIOS has bad sector in CCP.COM"
|
||||
errs:
|
||||
mvi c,print
|
||||
call bdos ;print the complaint
|
||||
mvi c,getch
|
||||
call bdos ;wait for any key
|
||||
jmp wboot ;try again and again
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; local and null processes
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
conost:
|
||||
auxist:
|
||||
auxost:
|
||||
mvi a,true ;the white lies
|
||||
devini:
|
||||
multio:
|
||||
xmove:
|
||||
selmem:
|
||||
setbnk:
|
||||
userf:
|
||||
ret ;the null routines
|
||||
flush:
|
||||
xra a ;not implemented
|
||||
ret
|
||||
devtbl:
|
||||
lxi h,-1 ;not implemented
|
||||
ret
|
||||
drvtbl:
|
||||
lxi h,-2 ;no table, no hashing
|
||||
ret
|
||||
move:
|
||||
; z80 users may code as:
|
||||
; xchg
|
||||
; db 0edh,0b0h ;ldir
|
||||
; xchg
|
||||
; ret
|
||||
;
|
||||
ldax d
|
||||
mov m,a
|
||||
inx h
|
||||
inx d
|
||||
dcx b
|
||||
mov a,b
|
||||
ora c
|
||||
jnz move
|
||||
ret
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; simple indexed processes
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
const equ bios+cnst80
|
||||
conin equ bios+cnin80
|
||||
conout equ bios+cnot80
|
||||
list equ bios+list80
|
||||
auxout equ bios+punc80
|
||||
auxin equ bios+redr80
|
||||
home equ bios+home80
|
||||
settrk equ bios+strk80
|
||||
setsec equ bios+ssec80
|
||||
setdma equ bios+sdma80
|
||||
read equ bios+read80
|
||||
write equ bios+writ80
|
||||
listst equ bios+lsta80
|
||||
sectrn equ bios+sctr80
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; complex indexed functions
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;this routine functions as follows:
|
||||
; 1.) the requested drive is saved for use as index later
|
||||
; 2.) seldsk in bios 2.2 is called to set-up disk tables
|
||||
; 3.) the returned bios 2.2 dph address is saved
|
||||
; 4.) the saved drive number is used to index into a block
|
||||
; of length (drives * 64-bytes). The 64-byte area
|
||||
; reserved for this drive is initially cleared (zeros).
|
||||
; 5.) using data taken from dph 2.2 returned by seldsk 2.2,
|
||||
; a new dph for 3.0 is constructed, with dpb and dirbcb.
|
||||
;
|
||||
; like this:
|
||||
;
|
||||
; dph: 25 bytes
|
||||
; null 7 bytes
|
||||
; dpb: 17 bytes
|
||||
; dirbcb: 15 bytes
|
||||
;
|
||||
; the dph references dpb and dirbcb. dirbcb references
|
||||
; the dirbuf from dph 2.2. xlt, csv, alv are from dph2
|
||||
; dpb3 is copied directly from the dpb in your bios
|
||||
;
|
||||
seldsk:
|
||||
lxi h,0 ;bad drive
|
||||
mov a,c ;drive request
|
||||
cpi drives
|
||||
rnc ;exit if no space alloc for drive
|
||||
mov b,e ;prev. selected bit
|
||||
push b ;save drive request
|
||||
call bios+slds80 ;run seldsk 2.2
|
||||
pop b ;restore drive request
|
||||
mov a,l
|
||||
ora h ;test for illegal drive
|
||||
rz ;if legal_drive (
|
||||
shld dph2 ;save address of dph 2.2
|
||||
mov l,c ;drive number
|
||||
mvi h,0
|
||||
dad h ;*2
|
||||
dad h ;*4
|
||||
dad h ;*8
|
||||
dad h ;*16
|
||||
dad h ;*32
|
||||
dad h ;*64...64 bytes per entry
|
||||
lxi d,tables ;base of table space
|
||||
dad d ;address of base block this drive
|
||||
mov a,b ;selected bit
|
||||
ani 1 ;lsb = 1 if previously selected
|
||||
rnz ;don't reinit if prev. sel.
|
||||
shld dph3 ;save address of new dph 3.0
|
||||
mvi b,64 ;bytes to clear
|
||||
call clear ;initialize space
|
||||
lhld dph2
|
||||
xchg
|
||||
lhld dph3
|
||||
lxi b,2
|
||||
call move ;dph3.xlt
|
||||
lxi b,12 ;offset to dph3.csv
|
||||
dad b
|
||||
xchg
|
||||
lxi b,10 ;offset to dph2.csv
|
||||
dad b
|
||||
xchg
|
||||
lxi b,4 ;2 words
|
||||
call move ;dph3.csv, alv
|
||||
xchg ;saving pointer to dph3.dirbcb
|
||||
lxi b,32+17 ;offset to bcb area
|
||||
lhld dph3 ;base
|
||||
dad b
|
||||
push h ;saving pointer to dirbcb
|
||||
xchg ;restore pointer to dph3.dirbcb
|
||||
mvi a,-1 ;dirbcb is unused
|
||||
stax d ;set dirbcb.drv to unused status
|
||||
mov m,e ;
|
||||
inx h
|
||||
mov m,d ;dph3.dirbcb <- dirbcb
|
||||
inx h
|
||||
mvi m,-1 ;
|
||||
inx h
|
||||
mvi m,-1 ;dph3.dtabcb <- empty
|
||||
lhld dph2
|
||||
lxi b,8 ;offset to dirbuf entry
|
||||
dad b
|
||||
xchg ;[de] is source
|
||||
pop h ;restore pointer to dirbcb
|
||||
lxi b,10 ;offset to bufadr entry
|
||||
dad b
|
||||
lxi b,2 ;1 word
|
||||
call move ;dirbcb.bufadr <- dirbuf2.2
|
||||
xchg ;[hl] points to dph2.dpb
|
||||
mov e,m ;
|
||||
inx h
|
||||
mov d,m ;read address of dpb2
|
||||
lhld dph3
|
||||
lxi b,12 ;offset to dpb within dph3
|
||||
dad b
|
||||
push h ;points to dpb within dph3
|
||||
lhld dph3
|
||||
lxi b,32 ;offset to dpb3
|
||||
dad b
|
||||
pop b ;restore pointer to dph3.dpb
|
||||
mov a,l
|
||||
stax b ;
|
||||
inx b
|
||||
mov a,h
|
||||
stax b ;dph3.dpb <- dpb3
|
||||
lxi b,15 ;bytes in dpb2
|
||||
call move ;fill-in dpb3 from dpb2
|
||||
if ldrbios
|
||||
lxi h,tables+64 ;empty space in dph3 for drive b:
|
||||
mvi b,15 ;length of bcb
|
||||
call clear
|
||||
lxi h,tables+64+15 ;empty space past dtabcb
|
||||
shld tables+64+10 ;dtabcb.bufadr
|
||||
lxi h,tables+64 ;dtabcb address
|
||||
shld tables+20 ;dph3.dtabcb
|
||||
mvi m,-1 ;set dtabcb.drv to unused
|
||||
endif
|
||||
lhld dph3 ;the big lie
|
||||
ret ; )
|
||||
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; local subroutines
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
clear:
|
||||
mvi m,0
|
||||
inx h
|
||||
dcr b
|
||||
jnz clear
|
||||
ret
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; initialized storage
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
ccpstg:
|
||||
db 'CCP COM'
|
||||
opnmsg:
|
||||
db 0dh,0ah,'BIOS can''t open CCP.COM $'
|
||||
errmsg:
|
||||
db 0dh,0ah,'BIOS has bad sector in CCP.COM $'
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; uninitialized storage
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
dseg
|
||||
dph2 ds 2
|
||||
dph3 ds 2
|
||||
tables ds 64*drives
|
||||
end
|
||||
;--------------------------------------------------------
|
||||
;cp/m is a registered trademark of digital research, inc.
|
||||
;you already knew that, but they wanted us to remind you.
|
||||
;--------------------------------------------------------
|
||||
|
||||
20
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/GBIOS.SYM
Normal file
20
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/GBIOS.SYM
Normal file
@@ -0,0 +1,20 @@
|
||||
F215 AUXIN 00D6 AUXIST 00D6 AUXOST F212 AUXOUT 0005 BDOS
|
||||
F200 BIOS 0060 BOOT 0000 BOOT80 0000 BOOTRAM 0100 CCP
|
||||
018B CCPSTG 0183 CLEAR 0009 CNIN80 000C CNOT80 0006 CNST80
|
||||
F209 CONIN 00D6 CONOST F20C CONOUT F206 CONST 00D8 DEVINI
|
||||
00DB DEVTBL 005C DFFCB 001A DMA 0000 DPH2 0002 DPH3
|
||||
0010 DRIVES 00DF DRVTBL 01B1 ERRMSG 00C9 ERRS 0000 FALSE
|
||||
00D9 FLUSH 0001 GETCH 00B8 GOCPM F218 HOME 0018 HOME80
|
||||
0003 IOBYTE 00C3 JMPOP 009D LDLOOP 0000 LDRBIOS F20F LIST
|
||||
000F LIST80 F22D LISTST 002D LSTA80 00E3 MOVE 00D8 MULTIO
|
||||
000F OPEN 00C0 OPERR 0196 OPNMSG 0009 PRINT 0012 PUNC80
|
||||
00C6 RDERR F227 READ 0027 READ80 0014 READSEQ 0015 REDR80
|
||||
0030 SCTR80 0024 SDMA80 F230 SECTRN 00EE SELDSK 00D8 SELMEM
|
||||
00D8 SETBNK F224 SETDMA F221 SETSEC F21E SETTRK 001B SLDS80
|
||||
0021 SSEC80 0100 STACK80 001E STRK80 0004 TABLES 0100 TPA
|
||||
FFFF TRUE 00D8 USERF 0003 WARM80 0003 WARMPT 0060 WBOOT
|
||||
002A WRIT80 F22A WRITE 00D8 XMOVE 0000 @AOVEC 0000 @BNKBF
|
||||
0000 @CIVEC 0000 @COVEC 0000 @CRDMA 0000 @CRDSK 0000 @DATE
|
||||
0000 @ERMDE 0000 @FX 0000 @HOUR 0000 @LOVEC 0000 @MIN
|
||||
0000 @MXTPA 0000 @RESEL 0000 @SEC 0000 @USRCD 0000 @VINFO
|
||||
|
||||
6
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/GEN.SUB
Normal file
6
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/GEN.SUB
Normal file
@@ -0,0 +1,6 @@
|
||||
rmac ldrbios
|
||||
link cpmldr,scb,ldrbios
|
||||
rmac gbios
|
||||
link bios3[os]=gbios,scb
|
||||
gencpm
|
||||
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/GENCPM.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/GENCPM.COM
Normal file
Binary file not shown.
195
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/HBIOS.ASM
Normal file
195
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/HBIOS.ASM
Normal file
@@ -0,0 +1,195 @@
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; PROGRAM ID: GBIOS3.ASM
|
||||
; GENERIC LOADER AND BIOS FOR CP/M PLUS
|
||||
; FOR CP/M-80 V2.2 SYSTEMS
|
||||
; UNBANKED
|
||||
; NO HASHING
|
||||
; BIOS PERFORMS BLOCKING/DEBLOCKING
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; ORGANIZATIONAL COMMENTARY
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
; This BIOS is designed to be the user's first step
|
||||
;in making an upgrade from CP/M-80 v2.2 to CP/M Plus v3.0.
|
||||
;This BIOS will function properly in most CP/M-2 systems,
|
||||
;even those with the BIOS in PROM.
|
||||
;
|
||||
;FUNCTION:
|
||||
; This PROGRAM implements an UNBANKED, NON-HASHED,
|
||||
;UNBUFFERED BIOS for CP/M Plus version 3.0.
|
||||
;
|
||||
;METHOD:
|
||||
; CP/M Plus allows many levels of sophistocation in
|
||||
;the implementation of the BIOS. At the highest levels,
|
||||
;the BIOS allows CP/M Plus to manage a potentially large
|
||||
;memory pool which acts like an instant access disk drive;
|
||||
;a substantial performence enhancement. At the lowest level,
|
||||
;the performance of CP/M Plus is the same as that of CP/M-80
|
||||
;version 2.2. This interface program is a simple implementation
|
||||
;of a CP/M Plus BIOS which operates as a parasite to the user's
|
||||
;existing BIOS for CP/M-80 version 2.2.
|
||||
;
|
||||
;PURPOSE:
|
||||
; This BIOS allows the CP/M-80 v2.2 user to easily
|
||||
;upgrade to CP/M Plus v3.0 and enjoy its logical enhancements
|
||||
;at the same level of performance he has enjoyed with v2.2.
|
||||
;This BIOS can be an end-point since system performance
|
||||
;will be satisfactory. For users who own the hardware
|
||||
;required to implement hashing and buffering, this BIOS
|
||||
;will serve as a welcome starting point for further enhancement.
|
||||
;
|
||||
;ORGANIZATION:
|
||||
; This BIOS is organized as follows:
|
||||
;
|
||||
; CONSTANTS
|
||||
; CONFIGURATION CONSTANTS AND CONDITIONS ***
|
||||
; EXTERNAL REFERENCES
|
||||
; PUBLIC DECLARATIONS (NULL)
|
||||
; RAM DEFINITIONS
|
||||
; CP/M 2.2 LINKAGE EQUATES
|
||||
;
|
||||
; CP/M PLUS JUMP TABLE
|
||||
; INITIALIZATION PROCESSES
|
||||
; LOCAL AND NULL PROCESSES
|
||||
; SIMPLE INDEXED PROCESSES
|
||||
; COMPLEX INDEXED PROCESSES
|
||||
; LOCAL SUBROUTINES
|
||||
; INITIALIZED STORAGE
|
||||
; UNINITIALIZED STORAGE
|
||||
; END
|
||||
;
|
||||
; *** edit these
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; OPERATIONAL COMMENTARY
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; Digital Research owes much of its success to the
|
||||
;foresight of its operating system designers who have seen
|
||||
;fit to make their products upward compatible with one
|
||||
;another. CP/M Plus is no exception, and so it is no
|
||||
;surprise that the CP/M Plus BIOS shares many constructs
|
||||
;with the earlier CP/M-80 v2.2.
|
||||
;
|
||||
; The CP/M Plus BIOS implements 32 entry points in
|
||||
;its jump table. Of these, the first 17 correspond to the
|
||||
;17 entries in the CP/M-80 v2.2 jump table. 14 of these
|
||||
;are treated as identical to those in 2.2. These index
|
||||
;directly into the 2.2 jump table. The remaining three in the
|
||||
;2.2 set are BOOT, which is null, WBOOT, which loads CCP.COM,
|
||||
;and SELDSK which creates all of the necessary disk data
|
||||
;structures required by CP/M Plus based on those in the 2.2 BIOS.
|
||||
;The remaining 15 entries in the CP/M Plus BIOS, with the
|
||||
;single exception of MOVE, are implemented in one of
|
||||
;the following ways:
|
||||
;
|
||||
; 1.) null, simply return.
|
||||
; 2.) nearly null, do something really simple.
|
||||
; 3.) tell a white lie.
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; constants
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; configuration constants and conditions
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;ldrbios equ true
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; external references
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; public declarations
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
;currently null
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; ram definitions
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; cp/m v2.2 linkage equates
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; cp/m plus version 3.0 jump table
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
; org (bios-(200h+64*drives)) and 0ff00h
|
||||
;
|
||||
;
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; initialization processes
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; initialize low memory jumps
|
||||
;
|
||||
;
|
||||
; load ccp.com into tpa
|
||||
;
|
||||
;
|
||||
; the load loop
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; local and null processes
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
; z80 users may code as:
|
||||
; xchg
|
||||
; db 0edh,0b0h ;ldir
|
||||
; xchg
|
||||
; ret
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; simple indexed processes
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; complex indexed functions
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; local subroutines
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; initialized storage
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; uninitialized storage
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;--------------------------------------------------------
|
||||
;cp/m is a registered trademark of digital research, inc.
|
||||
;you already knew that, but they wanted us to remind you.
|
||||
;--------------------------------------------------------
|
||||
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/JNK.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/JNK.COM
Normal file
Binary file not shown.
506
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/LDRBIOS.ASM
Normal file
506
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/LDRBIOS.ASM
Normal file
@@ -0,0 +1,506 @@
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; PROGRAM ID: GBIOS3.ASM
|
||||
; GENERIC LOADER AND BIOS FOR CP/M PLUS
|
||||
; FOR CP/M-80 V2.2 SYSTEMS
|
||||
; UNBANKED
|
||||
; NO HASHING
|
||||
; BIOS PERFORMS BLOCKING/DEBLOCKING
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; ORGANIZATIONAL COMMENTARY
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
; This BIOS is designed to be the user's first step
|
||||
;in making an upgrade from CP/M-80 v2.2 to CP/M Plus v3.0.
|
||||
;This BIOS will function properly in most CP/M-2 systems,
|
||||
;even those with the BIOS in PROM.
|
||||
;
|
||||
;FUNCTION:
|
||||
; This PROGRAM implements an UNBANKED, NON-HASHED,
|
||||
;UNBUFFERED BIOS for CP/M Plus version 3.0.
|
||||
;
|
||||
;METHOD:
|
||||
; CP/M Plus allows many levels of sophistocation in
|
||||
;the implementation of the BIOS. At the highest levels,
|
||||
;the BIOS allows CP/M Plus to manage a potentially large
|
||||
;memory pool which acts like an instant access disk drive;
|
||||
;a substantial performence enhancement. At the lowest level,
|
||||
;the performance of CP/M Plus is the same as that of CP/M-80
|
||||
;version 2.2. This interface program is a simple implementation
|
||||
;of a CP/M Plus BIOS which operates as a parasite to the user's
|
||||
;existing BIOS for CP/M-80 version 2.2.
|
||||
;
|
||||
;PURPOSE:
|
||||
; This BIOS allows the CP/M-80 v2.2 user to easily
|
||||
;upgrade to CP/M Plus v3.0 and enjoy its logical enhancements
|
||||
;at the same level of performance he has enjoyed with v2.2.
|
||||
;This BIOS can be an end-point since system performance
|
||||
;will be satisfactory. For users who own the hardware
|
||||
;required to implement hashing and buffering, this BIOS
|
||||
;will serve as a welcome starting point for further enhancement.
|
||||
;
|
||||
;ORGANIZATION:
|
||||
; This BIOS is organized as follows:
|
||||
;
|
||||
; CONSTANTS
|
||||
; CONFIGURATION CONSTANTS AND CONDITIONS ***
|
||||
; EXTERNAL REFERENCES
|
||||
; PUBLIC DECLARATIONS (NULL)
|
||||
; RAM DEFINITIONS
|
||||
; CP/M 2.2 LINKAGE EQUATES
|
||||
;
|
||||
; CP/M PLUS JUMP TABLE
|
||||
; INITIALIZATION PROCESSES
|
||||
; LOCAL AND NULL PROCESSES
|
||||
; SIMPLE INDEXED PROCESSES
|
||||
; COMPLEX INDEXED PROCESSES
|
||||
; LOCAL SUBROUTINES
|
||||
; INITIALIZED STORAGE
|
||||
; UNINITIALIZED STORAGE
|
||||
; END
|
||||
;
|
||||
; *** edit these
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; OPERATIONAL COMMENTARY
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; Digital Research owes much of its success to the
|
||||
;foresight of its operating system designers who have seen
|
||||
;fit to make their products upward compatible with one
|
||||
;another. CP/M Plus is no exception, and so it is no
|
||||
;surprise that the CP/M Plus BIOS shares many constructs
|
||||
;with the earlier CP/M-80 v2.2.
|
||||
;
|
||||
; The CP/M Plus BIOS implements 32 entry points in
|
||||
;its jump table. Of these, the first 17 correspond to the
|
||||
;17 entries in the CP/M-80 v2.2 jump table. 14 of these
|
||||
;are treated as identical to those in 2.2. These index
|
||||
;directly into the 2.2 jump table. The remaining three in the
|
||||
;2.2 set are BOOT, which is null, WBOOT, which loads CCP.COM,
|
||||
;and SELDSK which creates all of the necessary disk data
|
||||
;structures required by CP/M Plus based on those in the 2.2 BIOS.
|
||||
;The remaining 15 entries in the CP/M Plus BIOS, with the
|
||||
;single exception of MOVE, are implemented in one of
|
||||
;the following ways:
|
||||
;
|
||||
; 1.) null, simply return.
|
||||
; 2.) nearly null, do something really simple.
|
||||
; 3.) tell a white lie.
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; constants
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
true equ -1
|
||||
false equ not true
|
||||
jmpop equ 0c3h
|
||||
getch equ 1
|
||||
print equ 9
|
||||
open equ 15
|
||||
readseq equ 20
|
||||
dma equ 26
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; configuration constants and conditions
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
drives equ 2 ;number of drives supported
|
||||
bios equ 0e900h ;address of your bios
|
||||
ldrbios equ true
|
||||
;ldrbios equ false
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; external references
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
extrn @civec, @covec, @aovec, @lovec, @bnkbf
|
||||
extrn @crdma
|
||||
extrn @crdsk, @fx, @resel, @vinfo, @usrcd, @ermde
|
||||
extrn @date, @hour, @min, @sec, @mxtpa
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; public declarations
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
;currently null
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; ram definitions
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
iobyte equ 3
|
||||
tpa equ 100h
|
||||
dffcb equ 5ch
|
||||
stack80 equ 100h
|
||||
bootram equ 0
|
||||
bdos equ 5
|
||||
ccp equ tpa
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; cp/m v2.2 linkage equates
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
boot80 equ 0
|
||||
warm80 equ 3
|
||||
cnst80 equ 6
|
||||
cnin80 equ 9
|
||||
cnot80 equ 12
|
||||
list80 equ 15
|
||||
punc80 equ 18
|
||||
redr80 equ 21
|
||||
home80 equ 24
|
||||
slds80 equ 27
|
||||
strk80 equ 30
|
||||
ssec80 equ 33
|
||||
sdma80 equ 36
|
||||
read80 equ 39
|
||||
writ80 equ 42
|
||||
lsta80 equ 45
|
||||
sctr80 equ 48
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; cp/m plus version 3.0 jump table
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
cseg
|
||||
; org (bios-(200h+64*drives)) and 0ff00h
|
||||
;
|
||||
jmp boot ;arrive here from cold start load
|
||||
warmpt:
|
||||
jmp wboot ;arrive here for warm start
|
||||
jmp const ;return console input status
|
||||
jmp conin ;read console character
|
||||
jmp conout ;write conlole character
|
||||
jmp list ;write list character
|
||||
jmp auxout ;write aux character
|
||||
jmp auxin ;read aux character
|
||||
jmp home ;move to track zero on selected drive
|
||||
jmp seldsk ;select disk drive
|
||||
jmp settrk ;set track number
|
||||
jmp setsec ;set sector number
|
||||
jmp setdma ;set DMA address
|
||||
jmp read ;read selected sector
|
||||
jmp write ;write selected sector
|
||||
jmp listst ;return list device status
|
||||
jmp sectrn ;translate logical to physical sector number
|
||||
jmp conost ;return console output status
|
||||
jmp auxist ;return aux device input status
|
||||
jmp auxost ;return aux device output status
|
||||
jmp devtbl ;return address of character i/o table
|
||||
jmp devini ;init character i/o devices
|
||||
jmp drvtbl ;return address of disk drive table
|
||||
jmp multio ;set number of consec. sec. to read/write
|
||||
jmp flush ;flush user [de]blocking buffers
|
||||
jmp move ;copy memory to memory
|
||||
jmp xmove ;set banks for next move
|
||||
jmp selmem ;select memory bank
|
||||
jmp setbnk ;set bank for next DMA
|
||||
jmp userf ;reserved for me.
|
||||
jmp wboot
|
||||
jmp wboot ;reserved for DRI
|
||||
;
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; initialization processes
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
boot:
|
||||
if ldrbios
|
||||
ret
|
||||
endif
|
||||
;boot is null, falls thru to wboot
|
||||
wboot:
|
||||
lxi sp,stack80
|
||||
;
|
||||
; initialize low memory jumps
|
||||
;
|
||||
lxi h,warmpt
|
||||
shld bootram+1
|
||||
lhld @mxtpa
|
||||
shld bdos+1
|
||||
mvi a,jmpop
|
||||
sta bootram
|
||||
sta bdos
|
||||
;
|
||||
; load ccp.com into tpa
|
||||
;
|
||||
mvi b,36
|
||||
lxi h,dffcb
|
||||
call clear ;clear fcb area in low ram
|
||||
lxi h,dffcb
|
||||
mvi m,1 ;drive a:
|
||||
inx h
|
||||
lxi d,ccpstg ;'ccp com'
|
||||
lxi b,11 ;length of a file name
|
||||
call move ;move filename to fcb
|
||||
lxi d,dffcb
|
||||
mvi c,open
|
||||
call bdos ;open ccp.com
|
||||
ora a
|
||||
jnz operr ;if no error (
|
||||
lxi d,tpa ;load into tpa
|
||||
;
|
||||
; the load loop
|
||||
;
|
||||
ldloop:
|
||||
push d ;the current dma address
|
||||
mvi c,dma
|
||||
call bdos ;set dma for next 128 byte read
|
||||
lxi d,dffcb
|
||||
mvi c,readseq
|
||||
call bdos ;read file data to tpa ram
|
||||
ora a ;test for complete
|
||||
pop d ;restore dma address
|
||||
jnz gocpm ;exit when past file end
|
||||
lxi h,128 ;advance dma address 128 bytes
|
||||
dad d
|
||||
xchg
|
||||
jmp ldloop ;loop
|
||||
;
|
||||
;
|
||||
gocpm:
|
||||
cpi 1 ;only legal exit = past end of file
|
||||
jnz rderr
|
||||
jmp ccp ;now turn it loose
|
||||
;
|
||||
;
|
||||
operr:
|
||||
lxi d,opnmsg ;"BIOS can't open CCP.COM"
|
||||
jmp errs
|
||||
rderr:
|
||||
lxi d,errmsg ;"BIOS has bad sector in CCP.COM"
|
||||
errs:
|
||||
mvi c,print
|
||||
call bdos ;print the complaint
|
||||
mvi c,getch
|
||||
call bdos ;wait for any key
|
||||
jmp wboot ;try again and again
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; local and null processes
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
conost:
|
||||
auxist:
|
||||
auxost:
|
||||
mvi a,true ;the white lies
|
||||
devini:
|
||||
multio:
|
||||
xmove:
|
||||
selmem:
|
||||
setbnk:
|
||||
userf:
|
||||
ret ;the null routines
|
||||
flush:
|
||||
xra a ;not implemented
|
||||
ret
|
||||
devtbl:
|
||||
lxi h,-1 ;not implemented
|
||||
ret
|
||||
drvtbl:
|
||||
lxi h,-2 ;no table, no hashing
|
||||
ret
|
||||
move:
|
||||
; z80 users may code as:
|
||||
; xchg
|
||||
; db 0edh,0b0h ;ldir
|
||||
; xchg
|
||||
; ret
|
||||
;
|
||||
ldax d
|
||||
mov m,a
|
||||
inx h
|
||||
inx d
|
||||
dcx b
|
||||
mov a,b
|
||||
ora c
|
||||
jnz move
|
||||
ret
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; simple indexed processes
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
const equ bios+cnst80
|
||||
conin equ bios+cnin80
|
||||
conout equ bios+cnot80
|
||||
list equ bios+list80
|
||||
auxout equ bios+punc80
|
||||
auxin equ bios+redr80
|
||||
home equ bios+home80
|
||||
settrk equ bios+strk80
|
||||
setsec equ bios+ssec80
|
||||
setdma equ bios+sdma80
|
||||
read equ bios+read80
|
||||
write equ bios+writ80
|
||||
listst equ bios+lsta80
|
||||
sectrn equ bios+sctr80
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; complex indexed functions
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
;this routine functions as follows:
|
||||
; 1.) the requested drive is saved for use as index later
|
||||
; 2.) seldsk in bios 2.2 is called to set-up disk tables
|
||||
; 3.) the returned bios 2.2 dph address is saved
|
||||
; 4.) the saved drive number is used to index into a block
|
||||
; of length (drives * 64-bytes). The 64-byte area
|
||||
; reserved for this drive is initially cleared (zeros).
|
||||
; 5.) using data taken from dph 2.2 returned by seldsk 2.2,
|
||||
; a new dph for 3.0 is constructed, with dpb and dirbcb.
|
||||
;
|
||||
; like this:
|
||||
;
|
||||
; dph: 25 bytes
|
||||
; null 7 bytes
|
||||
; dpb: 17 bytes
|
||||
; dirbcb: 15 bytes
|
||||
;
|
||||
; the dph references dpb and dirbcb. dirbcb references
|
||||
; the dirbuf from dph 2.2. xlt, csv, alv are from dph2
|
||||
; dpb3 is copied directly from the dpb in your bios
|
||||
;
|
||||
seldsk:
|
||||
lxi h,0 ;bad drive
|
||||
mov a,c ;drive request
|
||||
cpi drives
|
||||
rnc ;exit if no space alloc for drive
|
||||
mov b,e ;prev. selected bit
|
||||
push b ;save drive request
|
||||
call bios+slds80 ;run seldsk 2.2
|
||||
pop b ;restore drive request
|
||||
mov a,l
|
||||
ora h ;test for illegal drive
|
||||
rz ;if legal_drive (
|
||||
shld dph2 ;save address of dph 2.2
|
||||
mov l,c ;drive number
|
||||
mvi h,0
|
||||
dad h ;*2
|
||||
dad h ;*4
|
||||
dad h ;*8
|
||||
dad h ;*16
|
||||
dad h ;*32
|
||||
dad h ;*64...64 bytes per entry
|
||||
lxi d,tables ;base of table space
|
||||
dad d ;address of base block this drive
|
||||
mov a,b ;selected bit
|
||||
ani 1 ;lsb = 1 if previously selected
|
||||
rnz ;don't reinit if prev. sel.
|
||||
shld dph3 ;save address of new dph 3.0
|
||||
mvi b,64 ;bytes to clear
|
||||
call clear ;initialize space
|
||||
lhld dph2
|
||||
xchg
|
||||
lhld dph3
|
||||
lxi b,2
|
||||
call move ;dph3.xlt
|
||||
lxi b,12 ;offset to dph3.csv
|
||||
dad b
|
||||
xchg
|
||||
lxi b,10 ;offset to dph2.csv
|
||||
dad b
|
||||
xchg
|
||||
lxi b,4 ;2 words
|
||||
call move ;dph3.csv, alv
|
||||
xchg ;saving pointer to dph3.dirbcb
|
||||
lxi b,32+17 ;offset to bcb area
|
||||
lhld dph3 ;base
|
||||
dad b
|
||||
push h ;saving pointer to dirbcb
|
||||
xchg ;restore pointer to dph3.dirbcb
|
||||
mvi a,-1 ;dirbcb is unused
|
||||
stax d ;set dirbcb.drv to unused status
|
||||
mov m,e ;
|
||||
inx h
|
||||
mov m,d ;dph3.dirbcb <- dirbcb
|
||||
inx h
|
||||
mvi m,-1 ;
|
||||
inx h
|
||||
mvi m,-1 ;dph3.dtabcb <- empty
|
||||
lhld dph2
|
||||
lxi b,8 ;offset to dirbuf entry
|
||||
dad b
|
||||
xchg ;[de] is source
|
||||
pop h ;restore pointer to dirbcb
|
||||
lxi b,10 ;offset to bufadr entry
|
||||
dad b
|
||||
lxi b,2 ;1 word
|
||||
call move ;dirbcb.bufadr <- dirbuf2.2
|
||||
xchg ;[hl] points to dph2.dpb
|
||||
mov e,m ;
|
||||
inx h
|
||||
mov d,m ;read address of dpb2
|
||||
lhld dph3
|
||||
lxi b,12 ;offset to dpb within dph3
|
||||
dad b
|
||||
push h ;points to dpb within dph3
|
||||
lhld dph3
|
||||
lxi b,32 ;offset to dpb3
|
||||
dad b
|
||||
pop b ;restore pointer to dph3.dpb
|
||||
mov a,l
|
||||
stax b ;
|
||||
inx b
|
||||
mov a,h
|
||||
stax b ;dph3.dpb <- dpb3
|
||||
lxi b,15 ;bytes in dpb2
|
||||
call move ;fill-in dpb3 from dpb2
|
||||
if ldrbios
|
||||
lxi h,tables+64 ;empty space in dph3 for drive b:
|
||||
mvi b,15 ;length of bcb
|
||||
call clear
|
||||
lxi h,tables+64+15 ;empty space past dtabcb
|
||||
shld tables+64+10 ;dtabcb.bufadr
|
||||
lxi h,tables+64 ;dtabcb address
|
||||
shld tables+20 ;dph3.dtabcb
|
||||
mvi m,-1 ;set dtabcb.drv to unused
|
||||
endif
|
||||
lhld dph3 ;the big lie
|
||||
ret ; )
|
||||
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; local subroutines
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
clear:
|
||||
mvi m,0
|
||||
inx h
|
||||
dcr b
|
||||
jnz clear
|
||||
ret
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; initialized storage
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
ccpstg:
|
||||
db 'CCP COM'
|
||||
opnmsg:
|
||||
db 0dh,0ah,'BIOS can''t open CCP.COM $'
|
||||
errmsg:
|
||||
db 0dh,0ah,'BIOS has bad sector in CCP.COM $'
|
||||
;--------------------------------------------------------
|
||||
;
|
||||
; uninitialized storage
|
||||
;
|
||||
;--------------------------------------------------------
|
||||
dseg
|
||||
dph2 ds 2
|
||||
dph3 ds 2
|
||||
tables ds 64*drives
|
||||
end
|
||||
;--------------------------------------------------------
|
||||
;cp/m is a registered trademark of digital research, inc.
|
||||
;you already knew that, but they wanted us to remind you.
|
||||
;--------------------------------------------------------
|
||||
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/LDRBIOS.REL
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/LDRBIOS.REL
Normal file
Binary file not shown.
20
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/LDRBIOS.SYM
Normal file
20
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/LDRBIOS.SYM
Normal file
@@ -0,0 +1,20 @@
|
||||
E915 AUXIN 00D7 AUXIST 00D7 AUXOST E912 AUXOUT 0005 BDOS
|
||||
E900 BIOS 0060 BOOT 0000 BOOT80 0000 BOOTRAM 0100 CCP
|
||||
01A2 CCPSTG 019A CLEAR 0009 CNIN80 000C CNOT80 0006 CNST80
|
||||
E909 CONIN 00D7 CONOST E90C CONOUT E906 CONST 00D9 DEVINI
|
||||
00DC DEVTBL 005C DFFCB 001A DMA 0000 DPH2 0002 DPH3
|
||||
0002 DRIVES 00E0 DRVTBL 01C8 ERRMSG 00CA ERRS 0000 FALSE
|
||||
00DA FLUSH 0001 GETCH 00B9 GOCPM E918 HOME 0018 HOME80
|
||||
0003 IOBYTE 00C3 JMPOP 009E LDLOOP FFFF LDRBIOS E90F LIST
|
||||
000F LIST80 E92D LISTST 002D LSTA80 00E4 MOVE 00D9 MULTIO
|
||||
000F OPEN 00C1 OPERR 01AD OPNMSG 0009 PRINT 0012 PUNC80
|
||||
00C7 RDERR E927 READ 0027 READ80 0014 READSEQ 0015 REDR80
|
||||
0030 SCTR80 0024 SDMA80 E930 SECTRN 00EF SELDSK 00D9 SELMEM
|
||||
00D9 SETBNK E924 SETDMA E921 SETSEC E91E SETTRK 001B SLDS80
|
||||
0021 SSEC80 0100 STACK80 001E STRK80 0004 TABLES 0100 TPA
|
||||
FFFF TRUE 00D9 USERF 0003 WARM80 0003 WARMPT 0061 WBOOT
|
||||
002A WRIT80 E92A WRITE 00D9 XMOVE 0000 @AOVEC 0000 @BNKBF
|
||||
0000 @CIVEC 0000 @COVEC 0000 @CRDMA 0000 @CRDSK 0000 @DATE
|
||||
0000 @ERMDE 0000 @FX 0000 @HOUR 0000 @LOVEC 0000 @MIN
|
||||
0000 @MXTPA 0000 @RESEL 0000 @SEC 0000 @USRCD 0000 @VINFO
|
||||
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/LIB.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/LIB.COM
Normal file
Binary file not shown.
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/LINK.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/LINK.COM
Normal file
Binary file not shown.
@@ -0,0 +1 @@
|
||||
Bring up CP/M 3 on your CP/M 2 BIOS: This is a file of source code for CP/M 3 BIOS's that will help you bring up CP/M 3 with your existing CP/M 2.2 BIOS. There are no DOC files, but the ASM files are heavily commented. This should be a good resource to aid in bringing up CP/M 3 for the first time.
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/RMAC.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/RMAC.COM
Normal file
Binary file not shown.
291
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/SBIOS.ASM
Normal file
291
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/SBIOS.ASM
Normal file
@@ -0,0 +1,291 @@
|
||||
true equ -1
|
||||
false equ not true
|
||||
jmpop equ 0c3h
|
||||
getch equ 1
|
||||
print equ 9
|
||||
open equ 15
|
||||
readseq equ 20
|
||||
dma equ 26
|
||||
drives equ 2
|
||||
bios equ 0ee00h
|
||||
ldrbios equ false
|
||||
extrn @civec, @covec, @aovec, @lovec, @bnkbf
|
||||
extrn @crdma
|
||||
extrn @crdsk, @fx, @resel, @vinfo, @usrcd, @ermde
|
||||
extrn @date, @hour, @min, @sec, @mxtpa
|
||||
iobyte equ 3
|
||||
tpa equ 100h
|
||||
dffcb equ 5ch
|
||||
stack80 equ 100h
|
||||
bootram equ 0
|
||||
bdos equ 5
|
||||
ccp equ tpa
|
||||
boot80 equ 0
|
||||
warm80 equ 3
|
||||
cnst80 equ 6
|
||||
cnin80 equ 9
|
||||
cnot80 equ 12
|
||||
list80 equ 15
|
||||
punc80 equ 18
|
||||
redr80 equ 21
|
||||
home80 equ 24
|
||||
slds80 equ 27
|
||||
strk80 equ 30
|
||||
ssec80 equ 33
|
||||
sdma80 equ 36
|
||||
read80 equ 39
|
||||
writ80 equ 42
|
||||
lsta80 equ 45
|
||||
sctr80 equ 48
|
||||
cseg
|
||||
jmp boot
|
||||
warmpt:
|
||||
jmp wboot
|
||||
jmp const
|
||||
jmp conin
|
||||
jmp conout
|
||||
jmp list
|
||||
jmp auxout
|
||||
jmp auxin
|
||||
jmp home
|
||||
jmp seldsk
|
||||
jmp settrk
|
||||
jmp setsec
|
||||
jmp setdma
|
||||
jmp read
|
||||
jmp write
|
||||
jmp listst
|
||||
jmp sectrn
|
||||
jmp conost
|
||||
jmp auxist
|
||||
jmp auxost
|
||||
jmp devtbl
|
||||
jmp devini
|
||||
jmp drvtbl
|
||||
jmp multio
|
||||
jmp flush
|
||||
jmp move
|
||||
jmp xmove
|
||||
jmp selmem
|
||||
jmp setbnk
|
||||
jmp userf
|
||||
jmp wboot
|
||||
jmp wboot
|
||||
boot:
|
||||
if ldrbios
|
||||
ret
|
||||
endif
|
||||
|
||||
wboot:
|
||||
lxi sp,stack80
|
||||
lxi h,warmpt
|
||||
shld bootram+1
|
||||
lhld @mxtpa
|
||||
shld bdos+1
|
||||
mvi a,jmpop
|
||||
sta bootram
|
||||
sta bdos
|
||||
mvi b,36
|
||||
lxi h,dffcb
|
||||
call clear
|
||||
lxi h,dffcb
|
||||
mvi m,1
|
||||
inx h
|
||||
lxi d,ccpstg
|
||||
lxi b,11
|
||||
call move
|
||||
lxi d,dffcb
|
||||
mvi c,open
|
||||
call bdos
|
||||
ora a
|
||||
jnz operr
|
||||
lxi d,tpa
|
||||
ldloop:
|
||||
push d
|
||||
mvi c,dma
|
||||
call bdos
|
||||
lxi d,dffcb
|
||||
mvi c,readseq
|
||||
call bdos
|
||||
ora a
|
||||
pop d
|
||||
jnz gocpm
|
||||
lxi h,128
|
||||
dad d
|
||||
xchg
|
||||
jmp ldloop
|
||||
gocpm:
|
||||
cpi 1
|
||||
jnz rderr
|
||||
jmp ccp
|
||||
operr:
|
||||
lxi d,opnmsg
|
||||
jmp errs
|
||||
rderr:
|
||||
lxi d,errmsg
|
||||
errs:
|
||||
mvi c,print
|
||||
call bdos
|
||||
mvi c,getch
|
||||
call bdos
|
||||
jmp wboot
|
||||
conost:
|
||||
auxist:
|
||||
auxost:
|
||||
mvi a,true
|
||||
devini:
|
||||
multio:
|
||||
xmove:
|
||||
selmem:
|
||||
setbnk:
|
||||
userf:
|
||||
ret
|
||||
flush:
|
||||
xra a
|
||||
ret
|
||||
devtbl:
|
||||
lxi h,-1
|
||||
ret
|
||||
drvtbl:
|
||||
lxi h,-2
|
||||
ret
|
||||
move:
|
||||
ldax d
|
||||
mov m,a
|
||||
inx h
|
||||
inx d
|
||||
dcx b
|
||||
mov a,b
|
||||
ora c
|
||||
jnz move
|
||||
ret
|
||||
const equ bios+cnst80
|
||||
conin equ bios+cnin80
|
||||
conout equ bios+cnot80
|
||||
list equ bios+list80
|
||||
auxout equ bios+punc80
|
||||
auxin equ bios+redr80
|
||||
home equ bios+home80
|
||||
settrk equ bios+strk80
|
||||
setsec equ bios+ssec80
|
||||
setdma equ bios+sdma80
|
||||
read equ bios+read80
|
||||
write equ bios+writ80
|
||||
listst equ bios+lsta80
|
||||
sectrn equ bios+sctr80
|
||||
seldsk:
|
||||
lxi h,0
|
||||
mov a,c
|
||||
cpi drives
|
||||
rnc
|
||||
mov b,e
|
||||
push b
|
||||
call bios+slds80
|
||||
pop b
|
||||
mov a,l
|
||||
ora h
|
||||
rz
|
||||
shld dph2
|
||||
mov l,c
|
||||
mvi h,0
|
||||
dad h
|
||||
dad h
|
||||
dad h
|
||||
dad h
|
||||
dad h
|
||||
dad h
|
||||
lxi d,tables
|
||||
dad d
|
||||
mov a,b
|
||||
ani 1
|
||||
rnz
|
||||
shld dph3
|
||||
mvi b,64
|
||||
call clear
|
||||
lhld dph2
|
||||
xchg
|
||||
lhld dph3
|
||||
lxi b,2
|
||||
call move
|
||||
lxi b,12
|
||||
dad b
|
||||
xchg
|
||||
lxi b,10
|
||||
dad b
|
||||
xchg
|
||||
lxi b,4
|
||||
call move
|
||||
xchg
|
||||
lxi b,32+17
|
||||
lhld dph3
|
||||
dad b
|
||||
push h
|
||||
xchg
|
||||
mvi a,-1
|
||||
stax d
|
||||
mov m,e
|
||||
inx h
|
||||
mov m,d
|
||||
inx h
|
||||
mvi m,-1
|
||||
inx h
|
||||
mvi m,-1
|
||||
lhld dph2
|
||||
lxi b,8
|
||||
dad b
|
||||
xchg
|
||||
pop h
|
||||
lxi b,10
|
||||
dad b
|
||||
lxi b,2
|
||||
call move
|
||||
xchg
|
||||
mov e,m
|
||||
inx h
|
||||
mov d,m
|
||||
lhld dph3
|
||||
lxi b,12
|
||||
dad b
|
||||
push h
|
||||
lhld dph3
|
||||
lxi b,32
|
||||
dad b
|
||||
pop b
|
||||
mov a,l
|
||||
stax b
|
||||
inx b
|
||||
mov a,h
|
||||
stax b
|
||||
lxi b,15
|
||||
call move
|
||||
if ldrbios
|
||||
lxi h,tables+64
|
||||
mvi b,15
|
||||
call clear
|
||||
lxi h,tables+64+15
|
||||
shld tables+64+10
|
||||
lxi h,tables+64
|
||||
shld tables+20
|
||||
mvi m,-1
|
||||
endif
|
||||
lhld dph3
|
||||
ret
|
||||
|
||||
clear:
|
||||
mvi m,0
|
||||
inx h
|
||||
dcr b
|
||||
jnz clear
|
||||
ret
|
||||
ccpstg:
|
||||
db 'CCP COM'
|
||||
opnmsg:
|
||||
db 0dh,0ah,'BIOS can''t open CCP.COM $'
|
||||
errmsg:
|
||||
db 0dh,0ah,'BIOS has bad sector in CCP.COM $'
|
||||
dseg
|
||||
dph2 ds 2
|
||||
dph3 ds 2
|
||||
tables ds 64*drives
|
||||
end
|
||||
|
||||
28
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/SCB.ASM
Normal file
28
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/SCB.ASM
Normal file
@@ -0,0 +1,28 @@
|
||||
title 'System Control Block Definition for CP/M3 BIOS'
|
||||
public @civec, @covec, @aivec, @aovec, @lovec, @bnkbf
|
||||
public @crdma
|
||||
public @crdsk, @fx, @resel, @vinfo, @usrcd, @ermde
|
||||
public @date, @hour, @min, @sec, @mxtpa
|
||||
|
||||
scb$base equ 0fe00h ;base of the scb
|
||||
@civec equ scb$base+22h
|
||||
@covec equ scb$base+24h
|
||||
@aivec equ scb$base+26h
|
||||
@aovec equ scb$base+28h
|
||||
@lovec equ scb$base+2ah
|
||||
@bnkbf equ scb$base+35h
|
||||
@crdma equ scb$base+3ch
|
||||
@crdsk equ scb$base+3eh
|
||||
@vinfo equ scb$base+3fh
|
||||
@resel equ scb$base+41h
|
||||
@fx equ scb$base+43h
|
||||
@usrcd equ scb$base+44h
|
||||
@ermde equ scb$base+4bh
|
||||
@date equ scb$base+58h
|
||||
@hour equ scb$base+5ah
|
||||
@min equ scb$base+5bh
|
||||
@sec equ scb$base+5ch
|
||||
?erjmp equ scb$base+5fh
|
||||
@mxtpa equ scb$base+62h
|
||||
end
|
||||
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/SCB.REL
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/SCB.REL
Normal file
Binary file not shown.
5
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/SCB.SYM
Normal file
5
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/SCB.SYM
Normal file
@@ -0,0 +1,5 @@
|
||||
FE00 SCBBASE FE5F ?ERJMP FE26 @AIVEC FE28 @AOVEC FE35 @BNKBF
|
||||
FE22 @CIVEC FE24 @COVEC FE3C @CRDMA FE3E @CRDSK FE58 @DATE
|
||||
FE4B @ERMDE FE43 @FX FE5A @HOUR FE2A @LOVEC FE5B @MIN
|
||||
FE62 @MXTPA FE41 @RESEL FE5C @SEC FE44 @USRCD FE3F @VINFO
|
||||
|
||||
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/SID.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/SID.COM
Normal file
Binary file not shown.
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/XREF.COM
Normal file
BIN
CPM OPERATING SYSTEMS/CPM 3.X/CPM 3.0/3ON2/XREF.COM
Normal file
Binary file not shown.
Reference in New Issue
Block a user