Re: Interested in a Z280 SBC [message #5436 is a reply to message #5435] |
Tue, 06 November 2018 17:31   |
plasmo
Messages: 916 Registered: March 2017 Location: New Mexico, USA
|
Senior Member |
|
|
Tony,
I set KRNL$DEBUG to false and rebuild. I can verify that cpm3 will boot up but pip with verify won't work for file size of 24K or greater. Even if files are smaller than 24K, and while pip can successfully copy & verify individual files, pip a collection of such files are not successful. e.g., pip c:=a:*.com[v] will not run to completion.
George,
I also tried your CPM Plus again. I've mentioned that memory contents need to be initialized with memory test patterns for your cpmldr to successfully boot CPM Plus. It turns out the magical locations are from 0x8-0xA (RST 08). They need to have the values 0x8F, 0x82, 0x06. These are pseudo random test patterns of my memory test, other values may also work. Once your CPM Plus is successfully booted, pip works just fine with any size files.
If we can just combine George & Tony's software...
|
|
|
|
|
|
|
|
Re: Interested in a Z280 SBC [message #5443 is a reply to message #5441] |
Wed, 07 November 2018 18:40   |
 |
agn453
Messages: 68 Registered: June 2018 Location: Newcastle, NSW, Australia
|
Member |
|
|
George,
geowar1 wrote on Thu, 08 November 2018 11:51
>> Thanks George ?? (Sorry if I guessed your name incorrectly).
>> I did find a missing save of AF in the bank selection routine (SELMEM aka ?BNKSL) only when I tried to clear the RAMDISK using my BIOS debugger's Z9 command (which writes E5's over the first 56KB of physical address 080000h - the directory groups of drive M:).
I didn't see AF saved in any of the other CP/M Plus BIOS's I have (CPU280 probably being the best one). BC/DE/HL yes... but not AF.
I had removed the "push af/pop af" when I was reviewing the register usage of each routine (grasping at straws). My BIOSDBG module, however, relied on no registers being changed when a different user-mode bank was selected. It was either re-instate it in the BIOS - or add the push/pop in BIOSDBG.
In any event, the effect on the file verification error didn't change.
Quote:
[snip]
>> I've also noticed that on the Z280RC using any version of CP/M 3 (Non-banked or Banked - including Bill's original supplied CPM3.SYS) that I cannot initialise a disk with time-stamping enabled using
I didn't have any problem with BillS's original BIOS or my version with...
A>initdir m: ! set m: [name=ramdisk,create=on,update=on] ! show m:[label]
BTW: I did notice that some of BillS's files may be corrupted... I had an error with GENSYS that I fixed by downloading a copy from the web. You might try pulling down a different PIP.
I think I replaced all of Bill's supplied CP/M Plus files with the Y2K fixed ones. I have a build environment and the CP/M 3 sources on my Mac Mini that allows me to recompile them (cpm3src_unix.zip from http://cpm.z80.de/source.html + zxcc-0.5.7 + thames-0.1.1). I've rebuilt PIP.COM with a larger stack (it was 100 bytes and I increased it to 150) - but this had no effect!
I have even tried the files from my Digital Research original 8-inch CP/M-Plus floppy distribution disks!
Tony
--
Tony Nicholson
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: Interested in a Z280 SBC [message #5460 is a reply to message #5457] |
Sat, 10 November 2018 16:57   |
 |
agn453
Messages: 68 Registered: June 2018 Location: Newcastle, NSW, Australia
|
Member |
|
|
Another update for my BIOS for the Z280RC at https://github.com/agn453/Z280RC ...
I've added DEBUG capability to enter the debugger upon CTRL-P being typed at the console. Providing that the system is waiting for input, this allows me to get in to display the contents of memory.
Also I made a special banked configuration (BANKED1.DAT input to GENCPM) that supports only two banks (bank 0 and 1) with directory hashing disabled and only a single directory and data buffer for each drive in bank 0. The resulting CPM3BNK1.SYS appears to be NOT WORKING (and I'm now NOT convinced there's a problem with CP/M 3 PIP corrupting buffers).
Now on a mission to further debug the buffer corruptions when they are in banks 2 and 3...
Tony
Edit: There's still file corruptions (I tried to extract the PPIP18.LBR file and UNCR created garbage on the banked version, but correctly expanded the compressed files under the Nonbanked system).
--
Tony Nicholson
[Updated on: Sat, 10 November 2018 23:41] Report message to a moderator
|
|
|
|
|
Re: Interested in a Z280 SBC [message #5463 is a reply to message #5462] |
Sat, 10 November 2018 17:37   |
 |
agn453
Messages: 68 Registered: June 2018 Location: Newcastle, NSW, Australia
|
Member |
|
|
BTW - I also found the attached program useful to walk the CP/M-Plus data structures and dump out the DPHs and DPBs on a running system (and to get buffer addresses generated by GENCPM).
Tony
Updated to the one I patched with DPB and DPH header information.
-
Attachment: CPM3ADD2.MAC
(Size: 16.62KB, Downloaded 380 times)
--
Tony Nicholson
[Updated on: Sat, 10 November 2018 23:18] Report message to a moderator
|
|
|
|
|
Re: Interested in a Z280 SBC [message #5466 is a reply to message #5465] |
Sat, 10 November 2018 23:27   |
 |
agn453
Messages: 68 Registered: June 2018 Location: Newcastle, NSW, Australia
|
Member |
|
|
geowar1 wrote on Sun, 11 November 2018 13:31Nice! Here's my boot with your gencpm.dat file:
3--CP/M3: 3 press Return to execute command
Boot LDRBIOS
[snip]
Quote:
A>dir
A: CONSOLE OU : "+"]n9 "2! : CONSOLE OU : "+"]n9 "2! : CONSOLE OU : "+"]n9 "2! : CONSOLE OU : "+"]n9 "2!
A: CONSOLE OU : "+"]n9 "2! : CONSOLE OU : "+"]n9 "2! : CONSOLE OU : "+"]n9 "2! : CONSOLE OU : "+"]n9 "2!
Looks like symptoms of.. I/O Page is for UART, then it's changed (or not changed to the CF I/O page) to read the next directory entry from the CF drive and is not restored back to UART to print the next directory entry.
[The CCP built-in DIR command interleaves console output with disk I/O to access the directory]
Tony
PS. I updated the CPM3ADD2.MAC program with the correct source-code (one that I had changed to print column headings for the DPH and DPB bytes)
--
Tony Nicholson
[Updated on: Sat, 10 November 2018 23:44] Report message to a moderator
|
|
|
|
|
|
|
|
Re: Interested in a Z280 SBC [message #5472 is a reply to message #5471] |
Sun, 11 November 2018 12:30   |
 |
agn453
Messages: 68 Registered: June 2018 Location: Newcastle, NSW, Australia
|
Member |
|
|
hperaza wrote on Mon, 12 November 2018 06:49
Just had a quick look at your BIOS source code noticed that you define an 'outjmp' macro that expands to 3 NOPs. Should be 4. Not sure if the bug is triggering in your case, but is certainly something to watch out for. Tony Nicholson's BIOS has the same problem.
Thanks for taking a look at this Hector. Much appreciated.
I have just re-built my BIOS with the extra NOP in the outjmp macro - and tried it. My tests of a banked memory configuration are still failing.
The OUTJMP Pascal source file suggests that at least one "normal" op-code be inserted between an OUT and a JP-style instruction. Telmann Reh also suggests re-coding to a subroutine CALL/RET or using an IN instruction.
I have also tried setting the Z280's cache-mode off to circumvent this possible issue to no effect!
I know a banked system works on the CPU280 hardware - so I'm going to look closely at its BIOS routines again for any other quirky work-arounds.
Does anyone have a copy of the actual Zilog Errata-sheets for the Z280? I have a scanned copy of the August 1987 one that only talks about cache-corruption while in Z80-bus compatible mode. The Z280RC board is using 16-bit Z-BUS mode so this shouldn't apply.
Tony
--
Tony Nicholson
[Updated on: Sun, 11 November 2018 12:49] Report message to a moderator
|
|
|
Re: Interested in a Z280 SBC [message #5473 is a reply to message #5472] |
Sun, 11 November 2018 17:18   |
plasmo
Messages: 916 Registered: March 2017 Location: New Mexico, USA
|
Senior Member |
|
|
I have not encountered the OUTJMP bug. From what I've read, it has to do with the insertion of many wait states in I/O access AND older mask of Z280. Z280RC has no wait state in the I/O accesses and uses Z280 with date code of 1992 or later. If you've found occurrences of OUTJMP bug on Z280RC, please send me samples of software.
Since I have no prior experiences with banked version of CP/M Plus, I want to 'sneak up' on it one step at a time. I'm starting with my non-banked version of CP/M Plus and relied on GENCPM as much as possible. I have a mostly-working banked version that relies on GENCPM to generate ALV, HASH table, DIRBCB, DTABCB, and XMOVE. It is rather slow because there is no XMOVE function. It has problems with RAMdisk but seems to work well with CF drives. I'm going to work on the XMOVE routine next. The BIOS is attached, you may notice it has no OUTJMP workaround.
Bill
|
|
|
|
Re: Interested in a Z280 SBC [message #5475 is a reply to message #5473] |
Sun, 11 November 2018 19:11   |
geowar1
Messages: 41 Registered: October 2018
|
Member |
|
|
plasmo wrote on Sun, 11 November 2018 17:18I have not encountered the OUTJMP bug. From what I've read, it has to do with the insertion of many wait states in I/O access AND older mask of Z280. Z280RC has no wait state in the I/O accesses and uses Z280 with date code of 1992 or later. If you've found occurrences of OUTJMP bug on Z280RC, please send me samples of software.
Since I have no prior experiences with banked version of CP/M Plus, I want to 'sneak up' on it one step at a time. I'm starting with my non-banked version of CP/M Plus and relied on GENCPM as much as possible. I have a mostly-working banked version that relies on GENCPM to generate ALV, HASH table, DIRBCB, DTABCB, and XMOVE. It is rather slow because there is no XMOVE function. It has problems with RAMdisk but seems to work well with CF drives. I'm going to work on the XMOVE routine next. The BIOS is attached, you may notice it has no OUTJMP workaround.
Bill
Hey BillS!,
I just built this (with ZSM4b10)... this is what I get on boot:
3--CP/M3: 3 press Return to execute command
Boot LDRBIOS
.
.
.
.
CP/M V3.0 Loader
Copyright (C) 1998, Caldera Inc.
BNKBIOS3 SPR F900 0700
BNKBIOS3 SPR C000 0000
RESBDOS3 SPR F300 0600
BNKBDOS3 SPR 9200 2E00
60K TPA
### BIOS has bad sector in CCP.COM
### BIOS has bad sector in CCP.COM
### BIOS has bad sector in CCP.COM
.
.
.
Note the BNKBIOS3.SPR addresses & sizes are different... Can you post the GENCPM.DAT file you used?
I don't know how it can say "bad sector"; your BIOS::READ: function only returns zero (xor a).
[Updated on: Sun, 11 November 2018 19:12] Report message to a moderator
|
|
|
Re: Interested in a Z280 SBC [message #5476 is a reply to message #5475] |
Sun, 11 November 2018 19:49   |
plasmo
Messages: 916 Registered: March 2017 Location: New Mexico, USA
|
Senior Member |
|
|
George,
In the early stage of my Z280 development, I was worried about the OUTJMP bug and whenever I had I/O problems, I'd insert a string of NOP's but that had never made any differences. I no longer worry about the OUTJMP issue, whether it is configured in the 16-bit ZBus mode or the 8-bit Z80-compatible mode.
I have not used ZSM4 except to assemble your code and Tony's (agn453) code. I normally use ZMAC on my PC and XMODEM the .rel file to Z280RC where it is linked and GENCPM-ed. Link command is:
link bnkbios3[b]=cbios3,scb
Attached is the gencpm.dat
Bill
[Updated on: Sun, 11 November 2018 19:50] Report message to a moderator
|
|
|
Re: Interested in a Z280 SBC [message #5477 is a reply to message #5476] |
Sun, 11 November 2018 21:49   |
 |
agn453
Messages: 68 Registered: June 2018 Location: Newcastle, NSW, Australia
|
Member |
|
|
Some progress with my BIOS for the Z280RC...
The DMA transfer routine (DMAXFR) seemed to be spuriously ignoring to transfer random 128-byte blocks between memory banks.
I re-worked the interbank memory move to use the memory mangement unit instead of DMA and this showed up the issue. Subsequently I re-coded the DMAXFR routine according the the procedure outlined in the preliminary Z280 technical manual (page 9-15 section 9.5.7) and added code to make sure the DMA Transaction Descriptor had no ENable bit while setting it up.
All this has fixed the Banked version that uses just bank 0 and 1 - see below (except for CP/M 3 PIP's verify error). The multi-bank version is still not working though.
Tony
PS: Updated sources are at https://github.com/agn453/Z280RC
C>test
A:TEST COM
Z280RC LDRBIOS 12-Nov-2018
CPMLDR3 - CP/M V3.0 Loader
Copyright (C) 1982, Digital Research
RESBIOS3 SPR F400 0C00
BNKBIOS3 SPR CB00 1500
RESBDOS3 SPR EE00 0600
BNKBDOS3 SPR 9D00 2E00
59K TPA
Z280RC Banked BIOS 12-Nov-2018
BIOSDBG active.
Use (C)ontinue to enter CP/M.
Typing <CTRL-P> re-enters BIOSDBG from console input.
Display Bank 01
@C
C>; C:PROFILE.SUB
C>d:setdef * d: c: a: [order=(com,sub) display page uk]
Drive Search Path:
1st Drive - Default
2nd Drive - D:
3rd Drive - C:
4th Drive - A:
Search Order - COM, SUB
Console Page Mode - On
Program Name Display - On
Date format used - UK
C>date
D:DATE COM
Mon 12/11/2018 16:31:17
C>m2:
2M>era *.*
ERASE *.* (Y/N)? y
2M>nulu c:ppip18
A:NULU COM (User 0)
NULU 1.52 (07/12/87)
Copyright (C) 1984, 1985 & 1987 by Martin Murray
Bug fixes in version 1.52 by Mick Waters
TYPE -H FOR HELP
Drive M: Total 1520k, Used 0k, Free 1520k
Library C2:PPIP18.LBR open.
(Buffer size: 309 sectors)
Active entries: 18, Deleted: 0, Free: 2, Total: 20.
-READY M2:>-e *.*
Extracting...
PPIP .COM to M2:PPIP .COM
PPIP .DZC to M2:PPIP .DZC
PPIP-0 .ZZ0 to M2:PPIP-0 .ZZ0
PPIP-1 .ZZ0 to M2:PPIP-1 .ZZ0
PPIP-2 .ZZ0 to M2:PPIP-2 .ZZ0
PPIP-3 .ZZ0 to M2:PPIP-3 .ZZ0
PPIP-4 .ZZ0 to M2:PPIP-4 .ZZ0
PPIP-5 .ZZ0 to M2:PPIP-5 .ZZ0
PPIP-5ZD.ZZ0 to M2:PPIP-5ZD.ZZ0
PPIP-7 .ZZ0 to M2:PPIP-7 .ZZ0
PPIP-8 .ZZ0 to M2:PPIP-8 .ZZ0
PPIP-9 .ZZ0 to M2:PPIP-9 .ZZ0
PPIP-Z .COM to M2:PPIP-Z .COM
PPIP-ZD .COM to M2:PPIP-ZD .COM
PPIP18 .FOR to M2:PPIP18 .FOR
PPIP18 .ZZ0 to M2:PPIP18 .ZZ0
READ .MZ to M2:READ .MZ
-Extract members M2:>-x
Closing C2:PPIP18.LBR...
2M>uncr *.*
A:UNCR COM (User 0)
GEL Uncruncher Version 2.8
----
M2:PPIP.DZC ==> M2:PPIP.DOC
in out rat ca cr
==== ==== ==== ==== ====
74 / 154 208% 4096 1986 ( 10k --> 20k)
----
M2:PPIP-0.ZZ0 ==> M2:PPIP-0.Z80
in out rat ca cr
==== ==== ==== ==== ====
62 / 126 203% 4096 1205 ( 8k --> 16k)
----
M2:PPIP-1.ZZ0 ==> M2:PPIP-1.Z80
in out rat ca cr
==== ==== ==== ==== ====
32 / 68 213% 3161 0 ( 4k --> 9k)
----
M2:PPIP-2.ZZ0 ==> M2:PPIP-2.Z80
in out rat ca cr
==== ==== ==== ==== ====
47 / 102 217% 4096 271 ( 6k --> 13k)
----
M2:PPIP-3.ZZ0 ==> M2:PPIP-3.Z80
in out rat ca cr
==== ==== ==== ==== ====
55 / 128 233% 4096 733 ( 7k --> 16k)
----
M2:PPIP-4.ZZ0 ==> M2:PPIP-4.Z80
in out rat ca cr
==== ==== ==== ==== ====
14 / 26 186% 1630 0 ( 2k --> 4k)
----
M2:PPIP-5.ZZ0 ==> M2:PPIP-5.Z80
in out rat ca cr
==== ==== ==== ==== ====
36 / 76 211% 3471 0 ( 5k --> 10k)
----
M2:PPIP-5ZD.ZZ0 ==> M2:PPIP-5ZD.Z80
in out rat ca cr
==== ==== ==== ==== ====
5 / 7 140% 679 0 ( 1k --> 1k)
----
M2:PPIP-7.ZZ0 ==> M2:PPIP-7.Z80
in out rat ca cr
==== ==== ==== ==== ====
37 / 77 208% 3554 0 ( 5k --> 10k)
----
M2:PPIP-8.ZZ0 ==> M2:PPIP-8.Z80
in out rat ca cr
==== ==== ==== ==== ====
42 / 86 205% 4022 0 ( 6k --> 11k)
----
M2:PPIP-9.ZZ0 ==> M2:PPIP-9.Z80
in out rat ca cr
==== ==== ==== ==== ====
17 / 32 188% 1851 0 ( 3k --> 4k)
----
M2:PPIP18.ZZ0 ==> M2:PPIP18.Z80
in out rat ca cr
==== ==== ==== ==== ====
43 / 79 184% 4096 9 ( 6k --> 10k)
----
M2:READ.MZ ==> M2:READ.ME
in out rat ca cr
==== ==== ==== ==== ====
7 / 11 157% 962 0 ( 1k --> 2k)
13 files processed.
2M>type ppip.doc
PPIP.DOC 07/15/88 Page 1
------------------------------------------------------------------------
Documentation for the PPIP program
------------------------------------------------------------------------
OVERVIEW
--------
PPIP is a file copy program for use with CP/M 80. It was written to
supplement, not replace, SWEEP, NSWP or PIP. If you want to copy or
backup just a few files, you can do so with PPIP and you won't have to
wait for SWEEP, VFILER, etc. to load and start. In addition, PPIP can
be included in SUBMIT files. PPIP.COM occupies less than 4K.
PPIP has the ability, unlike most copy programs, to PUSH or PULL files
between user areas. Areas from 0 to 31 are supported.
Wildcards are accepted for BOTH the source and destination file names.
This is another feature that gives you flexibility not offered by most
other copy programs.
Press RETURN to Continue
2M>m1:
1M>dir
No File
1M>pip m:=c:*.*[v]
D:PIP COM (User 0)
COPYING -
@BIOS280
CRCKLIST.CRC
BANKBIOS.LOG
BANKBIOS.SUB
BANKED.DAT
BANKED1.DAT
BDOS3.SPD
BDOS3.SPR
BIOS3.SPR
BIOS3.SYM
BIOSDBG.LST
BIOSDBG.REL
BIOSDBG.MAC
BIOSDBG.PR1
ERROR: VERIFY - M:BIOSDBG.$$$
1M>
--
Tony Nicholson
[Updated on: Sun, 11 November 2018 21:59] Report message to a moderator
|
|
|
Re: Interested in a Z280 SBC [message #5478 is a reply to message #5477] |
Sun, 11 November 2018 22:27   |
geowar1
Messages: 41 Registered: October 2018
|
Member |
|
|
>>> The DMA transfer routine (DMAXFR) seemed to be spuriously ignoring some random 128-byte block transfers between memory banks.
Is your source online somewhere? I'd like to see if I'm doing it the same way... I've beat on my DMA code... ran DMA/MMU tests overnight with very paranoid error checking... without errors... (or so I thought... ;-)
I've attached my (very modified version of BillS's) cbios3c.280 and the files necessary to build it (excluding those from the DRI distribution).
bs.sub builds non-banked.
bb.sub builds banked.
bl.sub build cpmldr (non-banked)
Note: I'm using zsm4 (beta 10) on the z280rc system... (booted in non-banked mode).
-
Attachment: Archive.zip
(Size: 24.70KB, Downloaded 318 times)
[Updated on: Sun, 11 November 2018 22:54] by Moderator Report message to a moderator
|
|
|
|
|
Re: Interested in a Z280 SBC [message #5482 is a reply to message #5481] |
Mon, 12 November 2018 07:05   |
plasmo
Messages: 916 Registered: March 2017 Location: New Mexico, USA
|
Senior Member |
|
|
I have coded up XMOVE using DMA and it is running. I still use GENCPM to take care of HASH, ALV, DIRBCB and DTABCB. I now ran into the same problem Tony has, i.e., when pip large file (help.hlp is my test file), it can't verify. However, I can pip small files without any issue. The one GENCPM option that seems to solve the problem is answering 'N' to the question 'Allocate buffers outside of Common (Y) ?'. I set up the disks with different combination of directory buffers, data buffers, and allocate buffers outside of common. Only the disks that have outside allocated buffers failed write verify. I'm using 3 banks of memory.
Bill
PS, I'm going to port the same software (slightly modified) to Z280 running in 8-bit Z80-compatible bus (https://github.com/Plasmode/ZZ80RC and see if it has the same problem.
|
|
|
|