Software fixes for Bruce Jones's code

Here's correspondence from Bruce Jones for software fixes to his Dec 2003 SD System software. Check my SD Systems page to obtain the software mentioned here and related software, and any SD Systems hardware I may have available. If you have questions on these fixes, please identify the specific software AND the specific fix by date and title, but no guarantees for a technical response.

This page last updated Jan 6 2004.

To return to my S-100 home page, follow this link. Material on this page (c) copyright Herb Johnson 2003, except for material provided by Bruce Jones with his permission, for which he retains copyright. Herb Johnson

From: "Bruce Jones" 
To: 
Subject: Bug Fix Note
Date: Fri, 26 Dec 2003 11:50:09 -0500

Two simple code fixes & one temporary user note:

TYPE - USER ACTION
FILE - V2FORMAT.COM

When creating an image to save format options, the user is prompted
for a file name. A full 8 characters must be typed in. If a name length
less than 8 is used, the program loops back & asks for a name again:

Temporary Fix-

Type in 8 character names
 - You can use trailing spaces if needed, for a name
   that has less than 8 alpha-numeric characters
 *** avoid typing spaces between characters ***

I'll fix the routine in the New Year. I never checked it back in 1980, it
looks like. But I also recall, from looking at old disketes, that I used 8
character names, like FORM1024 and MPM2FORM, so by chance I missed this!

TYPE - SOURCE CODE FIX
FILE - V2XIOS60.ASM AND V2MPMLDR.ASM

Testing under MP/M 1.1, which I had not done until Dec 23,uncovered the
following:

 - # 1

FILE - V2XIOS60.ASM

At some time in the past I had removed the MP/M 1.X System Data Page Adrress
request.
In the source go to the routine SYSNIT:, found in the block HSTBUF:
Move down in the code until you reach the following comment:



;     PLACE SYSTEM INFO INTO MEMORY BANKS

	LHLD	SYSDTA	; MP/M II GETS IT RIGTH AWAY

 ========================================================
Snip out the code line shown above and paste in the following:
 ========================================================

;     PLACE SYSTEM INFO INTO MEMORY BANKS

	.IFE	MPM1,[

	MVI	C,SYSDAT; REQUEST SYSTEM DATA ADDRESS.
	CALL	XDOS
	SHLD	SYSDTA	; SAVE ADDRESS LOCALLY
	][
	LHLD	SYSDTA	; MP/M II GETS IT RIGTH AWAY
	]

 - # 2

FILE - V2MPMLDR.ASM

Move to the end of the file where you will find the sector & directory
buffers, plus the allocation and checksum vectors. Add one pseudo-op to
relocate them higher up as shown.

This is needed to move this area out of the MP/M 1.X loader work area.
Originally, when 512 byte sectors were used, this was not a problem, but
1024 byte sectors pushed the DIRBUF and following ALV0 etc. into the loader
workspace, which DRI had set low, at 2000H. Later, in MP/M 2.X it was moved
further up. This fix has been tested to work for both MP/M 1.X and 2.X.
system loaders, so the one fixed loader will be OK.

Add the followng line. . .

	.LOC	5000H ;<- gets buffers & vectors out
                ; of harms way to 5000H

Code that follows is this . . . .

;****************************************************
;       SECTOR READ AND WRITE BUFFERS.
;****************************************************

HSTBUF:
RDBUFF:
WRBUFF:
	.BLKB	1024



;****************************************************
; CP/M WORK AREA. USED BY CP/M FOR DIRECTORY
; OPERATIONS, FLOPPY DISK ALLOCATION VECTORS,
; AND FLOPPY DISK CHANGED DISK CHECKSUMS.
;****************************************************

DIRBUF:	.BLKB	128	;DIRECTORY OPERATION BUFFER

ALV0:	.BLKB	108	;ALLOCATION VECTOR
CSV0:	.BLKB	68	;CHECKSUM VECTOR

ALV1:	.BLKB	1
CSV1:	.BLKB	1

	.END

When making an MP/M Loader the SAVE value is still 29, since these buffers
are just referances, thus the working loader image does not grow in size.

---that is all ---

Dec 28th 2003 #1
Subject: RE: Format Program Fix
Date: Sun, 28 Dec 2003 11:25:54 -0500

Here is the fix for the V2FORMAT Save function
Look past SAVEIT: to the start of SAVSYS:

Remove the code from SAVSYS: to just before the start of
DMATCH: and insert the following:
  

SAVSYS:
GO0:
	MVI	C,PRINTS	;TELL USER WE WANT FILE NAME INFO
	LXI	D,MESS5		
	CALL	BDOS
SINP:
	LXI	D,INBUFF	;POINT TO NAME BUFFER
	MVI	C,GBUF		;LOAD READ BUFFER FUNCTION
	CALL	BDOS

; TEST IF A NAME WAS ENTERED

	LDA	INBUFF+1
	CPI	0
	JZ	SAVEIT

	MOV	B,A		;SAVE FOR COUNT
UPCASE:
	LXI	H,INBUFF+2	;POINT TO NAME IN BUFFER

NXTCHR:
	MOV	A,M
	CPI	20H		;SEE IF SPACE
	JRZ	FIXSP		;IF SO FIX IT
	JMP	CHEKBC
FIXSP:
	MVI	A,'-'
	JMP	NOUP
CHEKBC:
	CPI	'0'		;TEST INVALID CHARACTER
	JRC	SAVEIT		;WE DON'T WANT THIS NAME
	CPI	40H
	JRC	NOUP
	ANI	0DFH	;MAKE UPPER CASE
NOUP:
	MOV	M,A
	INX	H
	DCR	B
	JRNZ	NXTCHR

;************************************************************
;*         PUT NAME IN FCB & SAVE THE IMAGE NEXT
;************************************************************

FILFCB:
	LXI	H,INBUFF+2	;POINT TO SAVE NAME
	LXI	D,FCBG+1	;POINT TO FCB NAME LOC
FILOK:
	LXI	B,8		;ZERO BC
	LDIR			;MOVE NAME INTO FCB

;**********************************************************
;*            TEST TO SEE IF FILE EXISTS	
;**********************************************************

 - DMATCH: starts here


    -=NOTE=-

You may want to add Upper Case conversion for
the console input routine as well.
It was common to run utilities with "CAP LOCK"
set, but this is likely to be ignored now, so
this will fix that problem.

You can add this fix to all source that uses
the CI: routine, such as

V2SASG.ASM
V2BOOT1.ASM TO V2BOOT4.ASM
V2SYSGEN.ASM
V2COPY.ASM
V2SASG5.ASM


CI:	PUSH	B
	PUSH	D
	PUSH	H
	MVI	C,1	;CONSOLE INPUT
	CALL	BDOS	;GET THE CHARACTER
	CPI	40H
	JC	OKCHAR
	ANI	0DFH	;MAKE U.C.
OKCHAR:
	POP	H
	POP	D
	POP	B
	RET

Dec 28 2003 #2
Subject: V2XIOS60.ASM NOTE
Date: Sun, 28 Dec 2003 11:48:59 -0500
In the source for the V2XIOS60 the following note needs a corerection:


is now:

;THE MPM1 VAR IS HERE SET FOR BANKED MP/M 2.X OPERATION
;NOTE: SAFE TO KEEP, EVEN IF MP/M 2.X IS RUN UNBANKED
;IF RUNNING MP/M 1.X, WITH UNBANKED BDOS, SET TO 0 <== WRONG!!!!

MPM1	==	1

	.IFE	MPM1,[
BNKIOS	==	1
		][
BNKIOS	==	0
	]



should be:

;THE MPM1 VAR IS HERE SET FOR BANKED MP/M 2.X OPERATION
;NOTE: SAFE TO KEEP, EVEN IF MP/M 2.X IS RUN UNBANKED
;IF RUNNING MP/M 1.X, ALWAYS SET TO 0 <=== CHANGE TO THIS


MPM1	==	1

	.IFE	MPM1,[
BNKIOS	==	1
		][
BNKIOS	==	0
	]

Jan 4 2004
On Mon, 5 Jan 2004 12:56:08 -0500, "Bruce Jones"  wrote:


** Small Hardware Change Note for VF-II **

I just received [a Versafloppy II controller card].

This should be the last change note.

I prepared the VF-II for operation, and it would not boot. I had to add a
jumper to get it operational.

Here is the change:

On U15 solder a jumper wire from pin 11 to Ground.

This is the RDY* (negative true) signal from pin 22 on the 8" drive
connector.

5.25" and 3.5" drives don't have a connection for this, so, it will always
make the drives look busy. In addition, I wrote the BIOS, XIOS and BOOT code
to work with this always grounded.

Since this line is a pull-up on the VF-II board, and since it is driven by
an open-collector
device from the floppy drive, shorting to ground is OK.

I learned back in 1980 that setting this always true for 8" drives was not
only OK, but necessary. Myself and some of the applications programmers
noted that 'false' drive-not-ready errors would randomly pop up, depending
upon the drive brand and model, and the seek pattern, if the RDY line was
kept 'normal'. The commands used by the BIOS, XIOS and format software work
just fine without the floppy drive controlling this line.

I have now run the [new] VF-II in the following modes:

- PIO only, no interrupts
- DMA with interrupts

I have run it so under CP/M and MP/M, just fine.

I have also run the disk format software OK as well, so that covers all the
functionality.

One other thing is the strange cross-jumpering of E8-E9. I guess that was an
SD Systems mod for their OS driver. I do straight-thru jumpers (E7-E8 &
E9-E10) for FDC end-of-operation interrupt and DMA DRQ signals. But it would
only be an issue, which I would explain, if anyone runs MP/M or the BIOS
with a Z80-DMA and interrupts. The BIOS code for DMA use is not issued,
since we decided to just make a BIOS that worked with the VF-II and most
CPUs, but anyone looking at the [MP/M] XIOS would see the conditional
assembly for it, however I see you have not posted that code.

Best regards,
Bruce Jones

[note from Herb: XIOS code is available from my SD Systems distribution
disk or by special request.]