Browse Source

Merge pull request #71 from wwarthen/master

Drive letter assignment enhancement
pull/76/head
b1ackmai1er 6 years ago
committed by GitHub
parent
commit
89b2489727
  1. 1
      Doc/ChangeLog.txt
  2. 2
      ReadMe.txt
  3. 91
      Source/CBIOS/cbios.asm
  4. 2
      Source/CBIOS/ver.inc
  5. 2
      Source/CPM22/ver.inc
  6. 2
      Source/CPM3/ver.inc
  7. 2
      Source/HBIOS/Build.ps1
  8. 11
      Source/HBIOS/ppide.asm
  9. 2
      Source/HBIOS/ver.inc
  10. 2
      Source/ZSDOS/ver.inc

1
Doc/ChangeLog.txt

@ -42,6 +42,7 @@ Version 2.9.2
- WBW: Switch RC/SC Z180 platforms to 115,200 default baud rate
- PMS: Enhanced PPIDE driver to handle multiple PPI interfaces
- PMS: Added a ROM based game
- WBW: Only assign drive letters to hard disk devices with media
Version 2.9.1
-------------

2
ReadMe.txt

@ -7,7 +7,7 @@
***********************************************************************
Wayne Warthen (wwarthen@gmail.com)
Version 2.9.2-pre.28, 2020-02-07
Version 2.9.2-pre.29, 2020-02-08
https://www.retrobrewcomputers.org/
RomWBW is a ROM-based implementation of CP/M-80 2.2 and Z-System for

91
Source/CBIOS/cbios.asm

@ -302,7 +302,7 @@ BOOT:
LD SP,STACK ; STACK FOR INITIALIZATION
;
; COPY INITIALIZATION CODE TO RUNNINT LOCATION $8000
; COPY INITIALIZATION CODE TO RUNNING LOCATION $8000
LD HL,BUFPOOL
LD DE,$8000
LD BC,CBIOS_END - BUFPOOL
@ -2014,7 +2014,7 @@ AUTOSUB:
INC A ; CHECK FOR ERR, $FF --> $00
RET Z ; ERR, DO NOT ATTEMPT AUTO SUBMIT
;
LD HL,CMD ; ADDRESS OF STARTUP COMMAND
LD HL,CMD ; ADDRESS OF STARTUP COMMANDs
LD DE,CCP_LOC + 7 ; START OF COMMAND BUFFER IN CCP
LD BC,CMDLEN ; LENGTH OF AUTOSTART COMMAND
LDIR ; PATCH COMMAND LINE INTO CCP
@ -2398,7 +2398,11 @@ DRV_INIT:
LD (DRVMAPADR),HL ; SAVE AS DRVMAP ADDRESS
LD (HEAPTOP),HL ; AND AS NEW HEAP TOP
;
; SETUP TO LOOP THROUGH AVAILABLE DEVICES
; SETUP TO LOOP THROUGH AVAILABLE DEVICES BUILDING LIST OF
; ACTIVE UNITS AND COUNTING NUMBER OF ACTIVE HARD DISK
; DEVICES. NON-HARD DISK UNITS ARE ALWAYS CONSIDERED
; ACTIVE, BUT HARD DISK UNITS ARE ONLY CONSIDERED ACTIVE
; IF THERE IS MEDIA IN THE DRIVE.
LD B,BF_SYSGET
LD C,BF_SYSGET_DIOCNT
RST 08 ; E := DISK UNIT COUNT
@ -2408,31 +2412,76 @@ DRV_INIT:
RET Z ; HANDLE ZERO DEVICES (ALBEIT POORLY)
;
; LOOP THRU DEVICES TO COUNT TOTAL HARD DISK VOLUMES
PUSH BC ; SAVE THE DEVICE COUNT
LD C,0 ; USE C AS DEVICE LIST INDEX
LD E,0 ; INIT E FOR HARD DISK VOLUME COUNT
LD C,0 ; INIT C AS DEVICE LIST INDEX
LD D,0 ; INIT D AS TOTAL DEVICE COUNT
LD E,0 ; INIT E FOR HARD DISK DEVICE COUNT
LD HL,DRVLST ; INIT HL PTR TO DRIVE LIST
;
DRV_INIT2:
PUSH BC ; SAVE LOOP CONTROL
CALL DRV_INIT3 ; CHECK DRIVE
POP BC ; RESTORE LOOP CONTROL
INC C ; NEXT UNIT
DJNZ DRV_INIT2 ; LOOP
POP BC ; RESTORE UNIT COUNT IN B
LD A,D ; TOTAL DEVICE COUNT TO D
LD (DRVLSTC),A ; SAVE THE COUNT
JR DRV_INIT4 ; CONTINUE
;
DRV_INIT3:
PUSH DE ; SAVE DE (HARD DISK VOLUME COUNTER)
PUSH HL ; SAVE DRIVE LIST PTR
PUSH BC ; SAVE LOOP CONTROL
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO
RST 08 ; CALL HBIOS, UNIT TO C
LD A,D ; DEVICE TYPE TO A
POP BC ; RESTORE LOOP CONTROL
POP HL ; RESTORE DRIVE LIST PTR
POP DE ; RESTORE DE
CP DIODEV_IDE ; HARD DISK DEVICE?
RET C ; NOPE, RETURN
JR NC,DRV_INIT3A ; IF SO, HANDLE SPECIAL
LD (HL),C ; SAVE UNIT NUM IN LIST
INC HL ; BUMP PTR
INC D ; INC TOTAL DEVICE COUNT
RET
;
DRV_INIT3A:
; CHECK FOR ACTIVE AND RETURN IF NOT
PUSH DE ; SAVE DE (HARD DISK VOLUME COUNTER)
PUSH HL ; SAVE DRIVE LIST PTR
PUSH BC ; SAVE LOOP CONTROL
LD B,BF_DIOMEDIA ; HBIOS FUNC: SENSE MEDIA
LD E,1 ; PERFORM MEDIA DISCOVERY
RST 08
POP BC ; RESTORE LOOP CONTROL
POP HL ; RESTORE DRIVE LIST PTR
POP DE ; RESTORE DE
RET NZ ; IF NO MEDIA, JUST RETURN
; IF ACTIVE...
LD (HL),C ; SAVE UNIT NUM IN LIST
INC HL ; BUMP PTR
INC D ; INC TOTAL DEVICE COUNT
INC E ; INCREMENT HARD DISK COUNT
RET ; AND RETURN
;
DRV_INIT4: ; SET SLICES PER VOLUME (HDSPV) BASED ON HARD DISK VOLUME COUNT
; ; *** DEBUG ***
; CALL NEWLINE2
; LD A,(DRVLSTC)
; LD B,A
; CALL PRTHEXBYTE
; LD A,' '
; CALL COUT
; LD HL,DRVLST
;TEMP1:
; LD A,(HL)
; INC HL
; CALL PRTHEXBYTE
; DJNZ TEMP1
; ; *** DEBUG ***
LD A,E ; HARD DISK VOLUME COUNT TO A
LD E,8 ; ASSUME 8 SLICES PER VOLUME
DEC A ; DEC ACCUM TO CHECK FOR COUNT = 1
@ -2446,14 +2495,20 @@ DRV_INIT5:
LD A,E ; SLICES PER VOLUME VALUE TO ACCUM
LD (HDSPV),A ; SAVE IT
;
; SETUP TO ENUMERATE DEVICES TO BUILD DRVMAP
LD B,BF_SYSGET
LD C,BF_SYSGET_DIOCNT
RST 08 ; E := DISK UNIT COUNT
LD B,E ; COUNT TO B
LD C,0 ; USE C AS DEVICE LIST INDEX
; ; SETUP TO ENUMERATE DEVICES TO BUILD DRVMAP
; LD B,BF_SYSGET
; LD C,BF_SYSGET_DIOCNT
; RST 08 ; E := DISK UNIT COUNT
; LD B,E ; COUNT TO B
; LD C,0 ; USE C AS DEVICE LIST INDEX
;
LD A,(DRVLSTC) ; ACTIVE DRIVE LIST COUNT TO ACCUM
LD B,A ; ... AND MOVE TO B FOR LOOP COUNTER
LD HL,DRVLST ; HL IS PTR TO ACTIVE DRIVE LIST
;
DRV_INIT6: ; LOOP THRU ALL UNITS AVAILABLE
PUSH HL ; PRESERVE DRIVE LIST PTR
LD C,(HL) ; GET UNIT NUM FROM LIST
PUSH BC ; PRESERVE LOOP CONTROL
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO
RST 08 ; CALL HBIOS, D := DEVICE TYPE
@ -2462,6 +2517,8 @@ DRV_INIT6: ; LOOP THRU ALL UNITS AVAILABLE
CALL DRV_INIT7 ; MAKE DRIVE MAP ENTRY(S)
POP BC ; RESTORE LOOP CONTROL
INC C ; INCREMENT LIST INDEX
POP HL ; RESTORE DRIVE LIST PTR
INC HL ; INCREMENT ACTIVE DRIVE LIST PTR
DJNZ DRV_INIT6 ; LOOP AS NEEDED
RET ; FINISHED
;
@ -2880,6 +2937,8 @@ HEAPTOP .DW BUFPOOL ; CURRENT TOP OF HEAP
BOOTVOL .DW 0 ; BOOT VOLUME, MSB=BOOT UNIT, LSB=BOOT SLICE
BNKRAMD .DB 0 ; STARTING BANK ID FOR RAM DRIVE
HDSPV .DB 2 ; SLICES PER VOLUME FOR HARD DISKS (MUST BE >= 1)
DRVLST .FILL 32 ; ACTIVE DRIVE LIST USED DURINT DRV_INIT
DRVLSTC .DB 0 ; ENTRY COUNT FOR ACTIVE DRIVE LIST
;
CMD .DB CMDLEN - 2
.TEXT "SUBMIT PROFILE"

2
Source/CBIOS/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 9
#DEFINE RUP 2
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.2-pre.28"
#DEFINE BIOSVER "2.9.2-pre.29"

2
Source/CPM22/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 9
#DEFINE RUP 2
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.2-pre.28"
#DEFINE BIOSVER "2.9.2-pre.29"

2
Source/CPM3/ver.inc

@ -3,5 +3,5 @@ rmn equ 9
rup equ 2
rtp equ 0
biosver macro
db "2.9.2-pre.28"
db "2.9.2-pre.29"
endm

2
Source/HBIOS/Build.ps1

@ -140,7 +140,7 @@ Function Concat($InputFileList, $OutputFile)
#
# Since TASM has no mechanism to include files dynamically based on variables, a file
# if built on-the-fly here for imbedding in the build process. This file is basically
# is built on-the-fly here for imbedding in the build process. This file is basically
# just used to include the platform and config files. It also passes in some values
# from the build to include in the build.

11
Source/HBIOS/ppide.asm

@ -990,14 +990,17 @@ PPIDE_RESET:
LD DE,150000/16 ; ~???MS
CALL VDELAY
;
CALL PPIDE_INITUNIT ; INIT CURRENT UNIT
; INITIALIZE THE INDIVIDUAL UNITS (MASTER AND SLAVE).
; BASED ON TESTING, IT APPEARS THAT THE MASTER UNIT MUST
; BE DONE FIRST OR THIS BEHAVES BADLY.
PUSH IY ; SAVE CFG PTR
CALL PPIDE_GOPARTNER ; POINT TO PARTNER
BIT 0,(IY+PPIDE_ACC) ; MASTER?
CALL Z,PPIDE_GOPARTNER ; IF NOT, SWITCH TO MASTER
CALL PPIDE_INITUNIT ; INIT CURRENT UNIT
CALL PPIDE_GOPARTNER ; POINT TO SLAVE
CALL PPIDE_INITUNIT ; INIT PARTNER UNIT
POP IY ; RECOVER ORIG CFG PTR
;
RET
;
;
;

2
Source/HBIOS/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 9
#DEFINE RUP 2
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.2-pre.28"
#DEFINE BIOSVER "2.9.2-pre.29"

2
Source/ZSDOS/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 9
#DEFINE RUP 2
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.2-pre.28"
#DEFINE BIOSVER "2.9.2-pre.29"

Loading…
Cancel
Save