开云体育

ctrl + shift + ? for shortcuts
© 2025 开云体育

Re: A Z80 Asm rec

 

I'm sure it's still Z80 code.? Once you figure out the other directives, any good editor with search and replace should fix it up quickly.

Plan B.? Get a PC that runs ASM20




On Friday, December 22, 2023 at 04:54:29 p.m. EST, ajparent1/kb1gmx <kb1gmx@...> wrote:


I'm trying to assemble ZMCV15....

ASMZ80 V20 can't get it to? run under Linux Mint and its format is?
sufficient different that most of the Z80 assembler I run under the
emulator (MyZ80) all find strange.? The path to reassembling it is
a serious edit, unfun.

Thoughts?

Allison


Re: A Z80 Asm rec

 

I haven't run Slackware since '98.
I'm running Mint 21 cinnamon...

Meantime in CP/M world on real hardware....?
I'm tried a dozen Z80 assemblers, least that what on the AmproLB+.

The only thing more diverse than assembler formats is disk formats of the day.


Allison


Re: A Z80 Asm rec

 

开云体育

Hmmm...

I had no issues compiling asmx2.0b5 on my Slackware machine via make, but "gcc *-c -o asmx' did not work and I didn't pursue the error.? Let me try (probably tomorrow) building it on my somewhat ancient Mint machine.

On 12/22/23 17:56, ajparent1/kb1gmx wrote:

Still not running...

Is there some missing incantation?? This is familiar to me with foreign (not repository)
code that seems to mostly do nothing.

>make install <? yields an error install is invalid parameter...
Trying to build with gcc is also a dud.

It would be really nice if it assembled under CP/M? (myz80 is a cp/m system).


Allison


Re: A Z80 Asm rec

 

Still not running...

Is there some missing incantation?? This is familiar to me with foreign (not repository)
code that seems to mostly do nothing.

>make install <? yields an error install is invalid parameter...
Trying to build with gcc is also a dud.

It would be really nice if it assembled under CP/M? (myz80 is a cp/m system).


Allison


Re: A Z80 Asm rec

 

开云体育

Herb Johnson has a modified version of asmx on his website at that assembles zmcv15.

-Bob

On 12/22/23 16:54, ajparent1/kb1gmx wrote:

I'm trying to assemble ZMCV15....

ASMZ80 V20 can't get it to? run under Linux Mint and its format is?
sufficient different that most of the Z80 assembler I run under the
emulator (MyZ80) all find strange.? The path to reassembling it is
a serious edit, unfun.

Thoughts?

Allison


Re: A Z80 Asm rec

 

I'm trying to assemble ZMCV15....

ASMZ80 V20 can't get it to? run under Linux Mint and its format is?
sufficient different that most of the Z80 assembler I run under the
emulator (MyZ80) all find strange.? The path to reassembling it is
a serious edit, unfun.

Thoughts?

Allison


Re: FAT without the fat, alternate SD IO

 

My next step is to get to the base raw SD initialization and read/write.
The idea is more compact code that has no fat artifacts or code needed
to handle it as fat. to me other than a few keep out areas the 1gb sd is
just a bag of 2,097,152 (0x200000) blocks of 512 bytes.

The idea is to have a super directory (tag and bag) of smaller
CP/M sized (8mb or smaller)? "disks" that can be loaded as needed.
Each would be file system only.? ?The CP/M OS is loaded from
EProm as pseudo boot track.? The?CP/M file systems can be loaded
on the fly as its an offset and DPH/DPB that describe the media.?
SELDISK in the BIOS selects a drive (up to 16) but usual systems
limit that due to buffer space and ALLOC space (256 byte per
8MB using 4K alloc) needs. But the base number of drives can be
altered on the fly and its a minor coding task to make that a loadable
system variable rather than BIOS fixed? as done often.

By doing that it become easy to make a really large device usable.
Seems to work fine for 128 or 256mb CF.

PC comparability for the SD is not used as files needed are simply
transferred via USB-serial to Z80MC.? By treating the SD as a
non removable memory it lightens the code.? Doing that allows for a
monitor, tag and bag OS, BIOS, CP/M image (62K system) plus
extras to fit in 32K eprom.

This is a result of thinking outside of the CP/M alteration guide
and 4 floppies.


Allison


Re: FAT without the fat, alternate SD IO

 

That may be it, I really don't enjoy parsing the FAT structure.? Accessing the device on the
LBA makes more sense to me as its really just a large number of addressable blocks.? I've
done that with IDE/CF for years and its faster.? Also makes it more in common with romdisk.

With the advent of large Eproms romdisk makes having base software available.? The
32K mapping for low address space makes it easy to have the rough equivilent of 8"SSSD
disk (about 240K) for those that remember CP/M 2.2.

Now to wade through the source and make sure I captured the needed code.

NSDOS is a tag and bag DOS.? Its structure is simple.
;***
;? ?Tag-n-Bag a primitive file system for mass storage device.
;? ?
;? ?Directory size typically 4 logical blocks (256, 512)
;? ?Empty entry is all spaces or zeros
;
;? ?16 bytes per entry FILE:
;? ? ? Byte? 0-7 symbolic name 8 char (ascii 7 bit)
;? ? ? ? ? ? 8,9 disk address (starting block)
;? ? ? ? ? 10,11 number of blocks in file
;? ? ? ? ? ? ?12 file type
;? ? ? ? ? ? ? ? ? 0=undefined
;? ? ? ? ? ? ? ? ? 1=executable 14-15 start addr
;? ? ? ? ? ? ? ? ? 2=data file?
;? ? ? ? ? 14-15 type dependent, start address
;
;? ?ODS:? device is a collection of sequential blocks
;? ? ? ? ?Block Logical size is 65535 max
;? ? ? ? ?NS* floppy has a boot block at 0000h
;? ? ? ? ?Block at logical 0000h is start of directory.
;==========================================================

The base version of that had no scatter gather mechanism so the NS* system had?
a utillity to compact the disk.? ? Another weel know OS that was similar was
DEC RT-11.

Why is it interesting,,,,? Any file can be a directory.


Allison


Re: FAT without the fat, alternate SD IO

 

Hi Allison,

You can just cut the FAT out.? Under the FAT is nothing more than reading/writing LBA.

Cheers,
Josh


On Friday, December 15, 2023 at 09:43:21 p.m. EST, ajparent1/kb1gmx <kb1gmx@...> wrote:


Planning a new Eprom for the Z80MC..

The basic plan is a tag and bag file system.? Anyone that has used NSdos
that was such a file system.? The plan s to rewrite NSDOS to use anything
but floppy (and their hard sector controller).? SD is the logical device.

So to do this I need to access the card at the sector level likely LBA.

My first pass is a handful of routines needed:
There is no on device file system assumed such as FAT16 or other
partition, or file table, or allocation table...
So the first usable block to max block (end of media!)? need to be known.
The assumption is 1 block is 512 bytes.
SD _RESET
SD_initial? ? initialize where the SD parameters are pulled from the device.
SD_Read_block
SD_write_block

The code needs to be compact so most FAT code contains unneeded functions.

I assume the SD will have wasted space as 1 or 2gb is far larger than needed.
Storage is cheap these days. Most z80 systems loaded with programs and
applications are relatively small.? ?My largest system uses 128mb CF and I
fill about 45mb of it.? Also PC readable is not required.?

Most examples found are not Z80 asm or are full FAT and most examples
are in C.? C on Z80 tends to produce large code.? A pointer or example code
would be helpful.? The ZMCV15 code has it but ts full FAT.
?

Allison


FAT without the fat, alternate SD IO

 

Planning a new Eprom for the Z80MC..

The basic plan is a tag and bag file system.? Anyone that has used NSdos
that was such a file system.? The plan s to rewrite NSDOS to use anything
but floppy (and their hard sector controller).? SD is the logical device.

So to do this I need to access the card at the sector level likely LBA.

My first pass is a handful of routines needed:
There is no on device file system assumed such as FAT16 or other
partition, or file table, or allocation table...
So the first usable block to max block (end of media!)? need to be known.
The assumption is 1 block is 512 bytes.
SD _RESET
SD_initial? ? initialize where the SD parameters are pulled from the device.
SD_Read_block
SD_write_block

The code needs to be compact so most FAT code contains unneeded functions.

I assume the SD will have wasted space as 1 or 2gb is far larger than needed.
Storage is cheap these days. Most z80 systems loaded with programs and
applications are relatively small.? ?My largest system uses 128mb CF and I
fill about 45mb of it.? Also PC readable is not required.?

Most examples found are not Z80 asm or are full FAT and most examples
are in C.? C on Z80 tends to produce large code.? A pointer or example code
would be helpful.? The ZMCV15 code has it but ts full FAT.
?

Allison


Re: Where's the CPM files

 

Great!


Re: Where's the CPM files

 

Looks good!? thanks


Re: Where's the CPM files

 

开云体育

that was it josh.? try it now and it should work.?


From: [email protected] <[email protected]> on behalf of joshbensadon via groups.io <joshbensadon@...>
Sent: December 8, 2023 10:43 AM
To: [email protected] <[email protected]>
Subject: Re: [Z80MC] Where's the CPM files
?
When I go to files section,? I should see "NEW/UPLOAD" button (like I do in COSMAC GROUP).? But I don't see it.

Is might be a permissions thing?


Re: Where's the CPM files

 

When I go to files section,? I should see "NEW/UPLOAD" button (like I do in COSMAC GROUP).? But I don't see it.

Is might be a permissions thing?


Re: Where's the CPM files

 

Nope.? I don't see any upload button.? Drag and drop doesn't work.


Re: Where's the CPM files

 

I'm in Groups IO.? I see my name in top right corner.

let's try files section again.


Re: Where's the CPM files

 

I uploaded a random file to check and it went OK so files are definitely enabled. Check that you’re signed in maybe?


Re: Where's the CPM files

 

We should ask Bill Rowe.



On Thursday, December 7, 2023 at 12:07:42 p.m. EST, ajparent1/kb1gmx <kb1gmx@...> wrote:


Tried to do that myself didn't work.? Files not enabled for this forum?




Allison


Re: Where's the CPM files

 

Tried to do that myself didn't work.? Files not enabled for this forum?




Allison


Re: Where's the CPM files

 

Ok, right, this isn't the COSMAC group.??

Thanks.


On Wednesday, December 6, 2023 at 11:28:30 a.m. EST, ajparent1/kb1gmx <kb1gmx@...> wrote:


Hi Josh,

Best place is the files section of the group.

While use PCs and program them even the older systems are my thing.
I still have the old don't you wish you have now what DEC had then.
For that I boot the MicroVAX as The OpenVMS Language Senstive Editor
LSE and cross platform systems are still cleaner than some of the current
PCisms.? Linux made than less painful.

The only time I've done SD so far I made FAT file of 256mb on a fresh 1GB
device?so that its allocated sequentially.? Then located the staring Block
number and addressed the blocks in it as LBA starting at xxxxxxH? to the
PC its just a block that's allocated with whatever inside.? The system then
doesn't need to know FAT at all.? The PC only created the larger
container file and allowed me to know the stating address. The CP/M
system populated the container file as sectors starting at xxxxxh.? The
PC was involved but minimally to initialize (create Fat 32 container file)
the disk.

As to BIOS design and storage allocation its not obvious but Alloc is a bit map
that has one bit per addressable block for the current allocation size.? I had to
figure that out in late 1979 when I got CP/M2.2 after running 1.3 and 1.4 in
prior years.? So Alloc map for 8mb using allocation block size of 4K bytes is
256 bytes, allocation block size can be as a large as 16K (32K on clones).
For large disks I use either 4K or 8k allocations.? The Allocation size limits
possible number of files as it sets a minimum granularity.? So for 8mb
using 8K allocation block size limits the disk to 1024 files, for 4K it would
be 2048 assuming DIRectory size can accommodate that.? The size of?
things in the bios for a given disk as all sorts of interactions.? The CP/M
Alteration Guide is rather vague on all that.. Andy Johnson-Larid
CP/M Handbook gets into it and helps make it clearer.

Once up as per earlier CP/M system getfile and putfile tools of my creation
are use to transfer serially via USB serial cable to PCs or real serial (tm)
to other non PC systems usually VAX, PDP-11, or CP/M.

For the BIOS I use on many systems where the device is LBA rather than
track sector I use sectors per track of 4 as the device is typically
512byte sectors and make tracks equal to the size of disk (8MB/512=16384).?
Offset is usually 0000 as I typically boot from Eprom (copy ccp and BDOS
from 8k eprom).? However offset is not part of the size of disk as literal 0th
is the first sector that happens to be directory for X many sectors with
data block after that.

Hard disks are not removable during operating of system so checked entries
will be zero (0) but is used for floppies to insure a media swap is caught before
a write which would trash the directory.

The next high memory cost item is the disk buffers typically equal to sector size or
sometimes block size? I try to keep them small.? For example 512 bytes by 4 drives
can easily eat up 2K of valuable ram in a basic 64K system.? Why?? They cannot
be shared if doing a disk to disk copy havoc would ensue. That's important
as high level languages like C, Pascal, and even assembles want ram to run? fast
and most the minimum is 48K (ram from 100h to base of BIOS) as the BDOS
and CCP are easily overlaid and reloaded.

Sector skew only applies to floppies (rotational delay) and for hard disks and
other modern media CF and SD zero (00) makes more sense.? Save having
skew table or calculating it.? I stopped building in floppies when IDE hit the
streets (as too small and salvage) and drives became cheap.?

CP/M itself has a internal math error that limits it to 8mb.? P2dos, NovaDOS, Zrdos
and a few others fix that at the cost of must be Z80 CPU.? For those 1GB is the limit
and 32Mb partitions makes more sense.? The latter due to the flat file structure.? I've
spent more than a little time inside CP/M (and enhanced clones) as sources have
been available since 1980.

Some of the buffers and other space eaters that the BIOS hides can be burred in
mapped ram such as Z80MC has for the first 32K.? I've used that before in?
a few of my machines where I strive for faster and larger available ram (usually 62K).?

The other trick is if the EPROM is large? as in greater than 16K a bootable image
of CP/M, Bios and a system monitor that will load it to ram. One block or mappable
ram is low ram and others used to support the BIOS.

FYI the z80MC will be paired with a small LCD Display and keyboard as a
portable system on battery.


Allison