开云体育

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

Re: A Z80 Asm rec

 

On Sat, Dec 30, 2023 at 12:30 PM, ajparent1/kb1gmx wrote:

Oddly the[asmx] Zip files I found none had a manual...
Then again I was looking for a TXT or DOC and it was HTML..
Oddly neither Herbs note or the HTML explain why H(val) or
HIGH (VAL) does not behave as they are documented.
This is Herb Johnson. The HTML document file in my ZIPped asmx distribution is a copy of a similar file in Bruce Tomlin's
asmx distribution. My copy has changes which represent the changes I made in asmx. Included in my file is the use of HIGH
and LOW which I added to my version. My Web page for asmx, also notes I added those features. In Bruce's file, he uses < and > for low and high byte
also the function H(value) and L(value). I believe my version of asmx, also supports Bruce's operation, but I'm not certain.

In any case, Bruce and I distribute C source, and you can inspect the C source to look for pseudo-ops and see how the code works.

There's been a lot of discussion here, about the asmx cross assembler. I was alerted to this discussion on Dec 30th and joined this
group, to make a few points, such as the above. Points are 1) there's documenation 2) there's source code, 3) there's Web sites. Use those
to get more information about use of these versions of asmx.

Another point - *contact me* if my version has some apparent issue. Nobody in this discussion contacted me, some third-party mentioned to me this discussion. I cannot help you if I don't know! And as almost no one has contacted me about my distribution of asmx in years, I've pretty much ignored it for the last few years. I show my work and date it, on my Web page, in my copy of the code.

Another point - there's more than one version of asmx! Do others a favor and note *whose distribution* of asmx you are talking about. I encourage Josh to
note a Web link or at least name me, where his code mentions use of asmx. My Web page immediately points to Bruce tomlin's Web page, and in fact Bruce has updated his code (without changing version or revision) up to a month ago.

Also:, thanks to this discussion,I'm aware there's a *third* distribution, on github. Apparently they took my version's changes, and moved them into Bruce's recent version. (shrug) I don't know that versions merits, but that seems like a good idea. I gave Bruce the opportunity to add my updates to his code, years ago. We are on good terms as far as I know, but not kept in touch.

Maybe I'll respond to other people's posts here, at a later time. I'm still waiting for my first post (I just joined) to be accepted by the moderator. Presumably this one too, I don't know yet.

Regards Herb Johnson


Re: A Z80 Asm rec

 

Hello folks, I'm Herb Johnson, the distributor of a version of Bruce Tomlin's great asmx cross assembler. It was called to my attention, there was
a discussion here about "my" asmx, Bruce's asmx, and Josh's use of (apparently my) asmx to support his/Lee Hart's Z80 product. All that is good,
but *nobody contacted me* until today - so I had zero opportunity to respond and help those who asked for help here. I just don't follow many discussion
groups, I have a Web site and an email address people can use to contact me and to find what I offer. That's how I work, mostly.

But I know most of the people in the discussion and I've supported Lee Hart and others for many years. So here I am for this moment. I'll respond in two parts. One, in general; then another message in particular. It's just too much text for one or even two messages! Hey, life's complicated. First, general responses.

1) Josh Bensadon's Z80MC Z80 source says quote "Assemble using ver 2.0 of the ASMX assembler by Bruce Tomlin"
end quote.

2) ASMX by Bruce Tomlin is available from Bruce Tomlin's Web site, and has been for decades, link below. His
asmx version for years has been called "2.0 beta 5". In recent years, he'd updated it, but apparently hasn't changed
the version/beta description. Read his Web site for more information.



2a) And ho ho ho! Somebody forked both Bruce's code, *and* my code, for asmx, and put it on github! Nobody told
Herb Johnson about this (that I recall)! Thanks to Scott Vitale for posting that information here, so now I know.



3) Pardon the history lesson. In year 2012, I looked for an 1802 cross assembler with macro capability. Why? Because I offer an 1802
cross assembler called A18, *without* macro capability. I wanted macro support. I found asmx, downloaded the source, and offered it on my site. Over time I and others made some mods to it. Bruce is/was aware of my use and can certainly extract any mods he wishes. The version of my asmx is self-described as "2.0b5+" currently with files dated up to Jan 2023. Again: my asmx code dates back to Tomlin's 2012 code.



*Note how points 2) and 3) relate to Josh's statement in point 1).*

4) I've recently updated my asmx Web page, to provide more information of this sort. I point out on my asmx Web page, people haven't contacted me about my asmx. So I haven't paid a lot of attention to it, or to Bruce's current work - until approximately "now". I don't promise I'll match Bruce's version, I'm just saying these are circumstances.

This suggests my following general advice:

If someone uses "my" asmx with Josh's Z80 code, and finds problems, I'd like to know, contact me please, but also read my fine documentation and Web page. I suggest likewise for Bruce's code, Web site and contacting him. If someone uses Bruce's most-recent asmx *and* my asmx, and finds differences, *please* let me know so I can consider changes, fixes in my version. But Bruce or I may have different features or other differences that aren't errors.

If my use and distribution of Bruce's code, has brought attention to his fine assembler, that's a good thing. I'm sorry if there's confusion between the two (make that three) "forks" but, you know, I've left a trail behind, I try to be responsible for my own litter, etc, but you have to *ask me*.

I'll address specific posted comments in my next email.

- regards, Herb Johnson


Re: FORMATTING THE uSD

 

Te St506 predated the st225 by about two years.? I have a few of the latter?
as they were free (RD 31 and also St250s RD32).? I prefered the RD52
Quatum drives much faster and more reliable.? I think I still have 10 or
12 of them.? And a bunch of BA42 boxes.

The ST250s I have some of the few remaining as they ran hot and
tended to fail without a lot of air.? That and RQDX2 and RQDX 3
controllers with formatting software XXDP) plus MSCP SCSI (CMD).

Primary use was one of the many Qbus PDP11s and a pair of
Qbus MicroVAXII as swapfile drives.??

Still use both PDP11 (primary is 11/73) and a bunch of MicroVAX mostly 3100s.
When I'm bored I fire up the PDP-8f for a dose of serious front panel.

The right way to handle large disks as most all are 512 byte is to treat a
physical sector as 4 logical so SPT can easily be 4 and then 16384
tracks with deblocking. NEver considered just using half a sector
even though they were cheap and plentiful.? Both efficient and
fast as then each sector read is usually a preread for the next 3.?
If you make it 32SPT you get a whole allocation unit 4KB) in the
buffer, obviously banked ram is needed to keep system size
large.? That and a write back timer to keep the file system clean.

However as mentioned a 1 or 2gb device is far bigger than CP/M can use
even with multiple loadable disks.? The largest compendium of CP/M
software barely fills a old school Cdrom even that has duplicates
of duplicates.? My largest system uses CF? a 128MB device in 8bit (memory)?
mode for easy interface.? Its partitioned in BIOS as 16 possible drives
with any 4 "on line" (61Kb system). and a loader program to use B:
through D: as any one of 15 not assigned.? Not one of those 8MB
partitions is fully used.? However they are organized with application
specific files like? one logical drive BDS C compiler, another
HiTEC C, and one for Pascal and so on.

The FAT approach is interesting but its nearly as a large as the whole
CP/M BDOS as it implements minimalist DOS. A dos within a dos.?
The BIOS seems to need the ZMC15 eprom for some of the low
level work.? Still digesting all of it.? However a thought that pops
up is a Z80 that runs PC Compatable at the filesystem level DOS
but has a full set of Z80 aps so that file transfers are DOS, even
better if a hierarchical files were doable.? It would be consistent
with the late 80s with people trying to get to better than CP/M or
maybe Unix.

I still build fast and high performing CP/M systems experimenting
with things like networking, supporting slave processors, and improving
performance.? Turns out very few system really exploited the possible
though the Kaypro 4/84, AmproLB+ for physically small and the
Compropro S100 crate offered things like RAMDISK, fast controllers
(DMA) and even a system multiplexer with 8085 to off load the
main cpu (z80 at 10mhz).?


Enough nattering on...

Allison


Re: FORMATTING THE uSD

 

I think I've seen an ST506 back in the day... but for the most part, I was playing with ST-225's on PDP's.? 20Meg was very nice but still not enough for any large systems.

For the big 8Meg disks, I go with 64 sectors then lay out the maximum block to get 8meg without going over 65536 CP/M sectors.??
For the boot disk, 1 reserve 1 track.?

I have an updated Z80MC_GO to load 59K CP/M instead of 61K.? I needed the extra 2K for the large disk allocation maps.? 512bytes times 4 disks.

The CP/M BIOS is in Z80MC_GO.? It will load CCP and BDOS from the disk... so the disk must have CP/M (assembled for 59K).

It would have definitely been a lot easier if I created my own format on the SD Card and even tossed away 3/4 of the disk sectors (ie, use the first 128 bytes of each 512 byte SD CARD sector).
But I kind of liked the idea of working within a FAT16 file that can later be tossed around in Windows.??

Converting 512 byte SD Card sectors to CP/M 128 byte sectors was a real challenge for me.? Great thought process.

So you read in the 512 bytes and use 1/4 of that buffer to return to CP/M.? Of course, CP/M is very likely going to ask for the next sector and sure enough, it's already there in RAM.
When CP/M asks for another sector that's not there in RAM, it's time to read the next SD Card sector... but wait... did CP/M change any data in those sectors?? If so, we better write that before reading the next SD Card Sector.? Now, what if CP/M wants to write to a sector that's not yet in RAM, well, it needs to be read first.? Yeah, sort story, I had to write my own data caching logic.? Fun stuff.

Cheers,
Josh





On Monday, January 1, 2024 at 03:57:46 p.m. EST, ajparent1/kb1gmx <kb1gmx@...> wrote:


Thanks Lee.

I used parted to examine the uSD and discovered it was basic fat 16.

I come from a time when a ST506 (5MB) seemed like more space than usable..
That lasted maybe a month.? Most systems with disk I found more than 60mb?
was more than excess and a 128MB CF being largely unused.

Two limits for that...
One is CP/M 2 max file system size is 8MB (65535 sectors max).
The other is each drive eats about 256bytes for the allocation map and with 64K ram, one word, ouch.

The common solution was some utility to allow for one drive as system and up to
three mapped (MOUNTED) in as needed.

For larger file systems CPM3 or the clones P2dos, Novados, Zrdos, or Zsystem
fixed an internal BDOS bug (and enhanced many things) and allows for up to
262144 sectors (logical 128 byte) or 33MB but the solution came with a directory
that could take a while to parse.? A penalty of a flat file system.

Generally for large media (IDE, CF and SD) that is LBA addressed
I use:
?Sectors= (alloc/128)/4 as, or 8 physical sectors per track
?8MB logical disk? (8mb/4096 alloc size) for 2048 Tracks.

CP/M actually passes a 16bit value for track and sector passed
in register pair BC.? Sector is typically less than 256 and track
can be as high as needed to address 8MB total.

That allows for a new logical partition spaced every 16384
physical sectors ((2048 * 4096= 8MB))/512= 16384 physical
sectors.?

Also CHKS is a checksum for directory to lock out possible
floppy changes mid operation.? For most systems with fixed
media (SD qualifies) the value is 0 (zero).

The only headache for CP/M Z80 is track and sector (logical 128)
is 16bit values, aka one track of 1 local sector * 65536 tracks, or?
256 sectors * 256 tracks, or and combination that multiplies
out to 16bit (65535) without overflow.? So for devices larger?
the offset is applied per drive number with 24 or 32 bit math
added to create a LBA value large enough for the device in use.

The application of this is for a 128MB CF that's 262144
512 byte physical sectors. or 16384 physical sectors
per 8MB logical disk. since they can be addressed from
LBA 0000 each logical disk starts every 16384 logical
sectors for a total of 16 possible logical drives.

ITs then a simple matter of adding (32bit) 16384 (0x004000)
For each logical drive (at the Bios level) or 0x004000 * drive
number. Its easily handled using a BIOS internal table that
the external BDOS does not access.

I keep it simple as since the whole initial system loads from
Eprom to ram that leaves out "system" tracks completely.
A simplification.? If that system needs upgrade the easy
way load a file and overlay the existing system, a handy
way to load improved CCP, BDOS or BIOS.

What I can't imagine is using a large device (more than 8mb)?
as a bunch of 8"SSSD floppies (241KB useable space)?
The acid test for disk adequacy is:

ASM cpm22.BCD? ? ; assemble a large version of CPM fully commented at 104KB
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? : source on B, hex on C, and PRN on D
FYI the resulting PRN file barely fits on a empty 8"SSSD floppy.??
That's why everyone from then want the largest disks possible.
Also why I started down the hard disk path in 1980 as even 2SDD 8" (1mb)
was still slowing me down and a 4 drive box was heavy, huge, and loud!


Allison


Re: FORMATTING THE uSD

 
Edited

Hi:
If I comprehend the question, you're not sure how to tell what file system the SD card is formatted for?

And further, how to format a partition as FAT16?

On WINDOWS, go to "MY COMPUTER" and right-click on the SD card drive. Select "properties" and it will show you (see below).



If using Linux, which I think you are, you can use 'fdisk' to show you how each partition is formatted. See the last line below.

toshl755d $ sudo fdisk -l /dev/sdc
Disk /dev/sdc: 7.4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
?
Device? ? ?Boot Start? ? ? End? Sectors? Size Id Type
/dev/sdc1? ? ? ? 8192 15523839 15515648? 7.4G? b W95 FAT32

As far as formatting under Linux, you can run (sudo or as root) GPARTED or as stated above, mkfs.vfat but be aware that mkfs.vfat allows you to specify the type of FAT used to format the partition with the '-F' option:?

? mkfs.fat 3.0.28 (2015-05-16)
? No device specified!?
? Usage: mkfs.fat [-a][-A][-c][-C][-v][-I][-l bad-block-file][-b backup-boot-sector]
? ? ? ? ?[-m boot-msg-file][-n volume-name][-i volume-id]
? ? ? ? ?[-s sectors-per-cluster][-S logical-sector-size][-f number-of-FATs]
? ? ? ? ?[-h hidden-sectors][-F fat-size][-r root-dir-entries][-R reserved-sectors]
? ? ? ? ?[-M FAT-media-byte][-D drive_number]
? ? ? ? ?[--invariant]
? ? ? ? ?[--help]
? ? ? ? ?/dev/name [blocks]

From the mkfs.vfat man file:

? -F FAT-SIZE
? ? ? ? ? ? ? Specifies the type of file allocation tables used (12, 16 or 32 bit).? If nothing is?
? ? ? ? ? specified, mkfs.fat will? automatically select between 12, 16 and 32 bit, whatever?
fits better for the filesystem size.
? ?
Hope that helps.

Happy New Year!

Peace and blessings,
JQ


Re: FORMATTING THE uSD

 

Thanks Lee.

I used parted to examine the uSD and discovered it was basic fat 16.

I come from a time when a ST506 (5MB) seemed like more space than usable..
That lasted maybe a month.? Most systems with disk I found more than 60mb?
was more than excess and a 128MB CF being largely unused.

Two limits for that...
One is CP/M 2 max file system size is 8MB (65535 sectors max).
The other is each drive eats about 256bytes for the allocation map and with 64K ram, one word, ouch.

The common solution was some utility to allow for one drive as system and up to
three mapped (MOUNTED) in as needed.

For larger file systems CPM3 or the clones P2dos, Novados, Zrdos, or Zsystem
fixed an internal BDOS bug (and enhanced many things) and allows for up to
262144 sectors (logical 128 byte) or 33MB but the solution came with a directory
that could take a while to parse.? A penalty of a flat file system.

Generally for large media (IDE, CF and SD) that is LBA addressed
I use:
?Sectors= (alloc/128)/4 as, or 8 physical sectors per track
?8MB logical disk? (8mb/4096 alloc size) for 2048 Tracks.

CP/M actually passes a 16bit value for track and sector passed
in register pair BC.? Sector is typically less than 256 and track
can be as high as needed to address 8MB total.

That allows for a new logical partition spaced every 16384
physical sectors ((2048 * 4096= 8MB))/512= 16384 physical
sectors.?

Also CHKS is a checksum for directory to lock out possible
floppy changes mid operation.? For most systems with fixed
media (SD qualifies) the value is 0 (zero).

The only headache for CP/M Z80 is track and sector (logical 128)
is 16bit values, aka one track of 1 local sector * 65536 tracks, or?
256 sectors * 256 tracks, or and combination that multiplies
out to 16bit (65535) without overflow.? So for devices larger?
the offset is applied per drive number with 24 or 32 bit math
added to create a LBA value large enough for the device in use.

The application of this is for a 128MB CF that's 262144
512 byte physical sectors. or 16384 physical sectors
per 8MB logical disk. since they can be addressed from
LBA 0000 each logical disk starts every 16384 logical
sectors for a total of 16 possible logical drives.

ITs then a simple matter of adding (32bit) 16384 (0x004000)
For each logical drive (at the Bios level) or 0x004000 * drive
number. Its easily handled using a BIOS internal table that
the external BDOS does not access.

I keep it simple as since the whole initial system loads from
Eprom to ram that leaves out "system" tracks completely.
A simplification.? If that system needs upgrade the easy
way load a file and overlay the existing system, a handy
way to load improved CCP, BDOS or BIOS.

What I can't imagine is using a large device (more than 8mb)?
as a bunch of 8"SSSD floppies (241KB useable space)?
The acid test for disk adequacy is:

ASM cpm22.BCD? ? ; assemble a large version of CPM fully commented at 104KB
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? : source on B, hex on C, and PRN on D
FYI the resulting PRN file barely fits on a empty 8"SSSD floppy.??
That's why everyone from then want the largest disks possible.
Also why I started down the hard disk path in 1980 as even 2SDD 8" (1mb)
was still slowing me down and a 4 drive box was heavy, huge, and loud!


Allison


Re: FORMATTING THE uSD

 

It apparently does but that is not helpful.

Man page on my system says the same thing save for I get...
? :mkfs.fat: unable to open /dev/sdb: No medium found
Same for all variants of? sdb (stick)...? /dev/sdb et al

Its a known good lexar 1GB stick formatted as ext4 that I could afford to break.

What's notable is once done its a one time use.? I will load a utility to do
what many?here use xmodem for.? The difference is my code is on all the other
dozen or so CP/M system I have and they talk nicely via serial line. Its a flavor
of Wong's (w Wong , October, 1983 Microsystems) network? ?Simply party line
network (think 9600baud csma/cd).


Allison


Re: A Z80 Asm rec

 

I used DRI's MAC80 and Microsoft's M80 for most of my Z80 programming. Later I got the SLR180 assembler, which was the fastest and most versatile Z80 assembler.? I used it to write a lot of code for the Heath H19 terminal (which was Z80-based).

?

Josh used the ASMX 2.0 assembler from Herb Johnson's website as-is. It also works for me as-is, but I haven't tried to recompile it.

?

> ...a different approach so that the Z80MC teamed with a portable terminal> emulation (not A PC) to make a portable system with enough performance> to assemble CP/M itself.

?

I've actually designed a Z80 terminal to pair with the Z80MC; but haven't gotten around to laying out the PCB yet. I wrote new firmware for the Heath H19 terminal that included quite a few features, and would like to re-use that code. Unanswered questions are a) what do to for a keyboard, and b) what to use for a screen.

?

For the keyboard, I don't want to use expensive modern switches or the keyboard alone will be big and cost over $100. So I'm thinking of something more like the Radio Shack model 100 keyboard, which had full size type-able keys but was fairly small and portable.

?

The screen will probably have to be LCD, as nothing else exists any more. But so many of them are "one-time wonders" that are available today, but not tomorrow.

?

Lee

--

Excellence does not require perfection. -- Henry James

--

Lee A. Hart

?


Re: FORMATTING THE uSD

 

Hi Allison,

?

Yes, the SD-card has to be formatted FAT16. This is also why you can't use cards over 2 Gb. It's hard for me to imagine needing over 2 Gb on a computer as small as the Z80MC!

?

Since small cards are getting rare and modern PCs often make it difficult or impossible to format FAT16, I include a 2 Gb SD-card, and format it in FAT16 for you.

?

I agree that the SD-card socket and USB-to-SD-card adapter supplied with the kit are poor (Chinese quality). But that's about all I can find these days. :-(

?

I'm trying to follow the file size/format discussions, but don't really have a clue about how the internals of CP/M disk formats work. But I should mention that there is a *lot* of RAM on the Z80MC. The Z80-SIO comes with a 128K RAM, of which only 32k is in use. And it has jumpers and bank-switching logic to use a 512k RAM instead.

?

Happy New Year!

Lee

--

Excellence does not require perfection. -- Henry James

--

Lee A. Hart

-----Original Message-----
From: <[email protected]>
Sent: Dec 31, 2023 8:26 PM
To: <[email protected]>
Subject: [Z80MC] FORMATTING THE uSD

?

The supplied uSD with the Z80MC according to the docs must be formatted FAT16...

Mine out of the box has a label Z80-SIO... a good thing but was it formatted to FAT 16?

If not I have one more system to try, an older 32bit running Ubuntu 12 to try as all
the others do not offer FAT16 formatting.??

Suggestions....


Allison

?


Re: FORMATTING THE uSD

 

开云体育

I'm pretty sure mkfs.fat will create a FAT16 disk -- from the man page, "mkfs.fat? is? used? to? create an MS-DOS filesystem under Linux on a device".

-Bob


On 12/31/23 21:26, ajparent1/kb1gmx wrote:

The supplied uSD with the Z80MC according to the docs must be formatted FAT16...

Mine out of the box has a label Z80-SIO... a good thing but was it formatted to FAT 16?

If not I have one more system to try, an older 32bit running Ubuntu 12 to try as all
the others do not offer FAT16 formatting.??

Suggestions....


Allison


Re: FORMATTING THE uSD

 

If it's not FAT16, the SD Init will fail and let you know it's a bad partition type.?




On Sunday, December 31, 2023 at 11:27:29 p.m. EST, ajparent1/kb1gmx <kb1gmx@...> wrote:


Problem solved... Used a old(CA 2004) Compaq pentium based machine running?
NT4 that would do FAT16.??

However the drd was already formatted fat 16.

Solved.


Re: FORMATTING THE uSD

 

Problem solved... Used a old(CA 2004) Compaq pentium based machine running?
NT4 that would do FAT16.??

However the drd was already formatted fat 16.

Solved.


FORMATTING THE uSD

 

The supplied uSD with the Z80MC according to the docs must be formatted FAT16...

Mine out of the box has a label Z80-SIO... a good thing but was it formatted to FAT 16?

If not I have one more system to try, an older 32bit running Ubuntu 12 to try as all
the others do not offer FAT16 formatting.??

Suggestions....


Allison


Re: A Z80 Asm rec

 

Oddly the Zip files I found none had a manual...??
Then again I was looking for a TXT or DOC and it was HTML..
Oddly neither Herbs note or the HTML explain why H(val) or
HIGH (VAL) does not behave as they are documented.

As a result I'll do the mask and shift as that was easy to implement and
compatible with assemblers on the CP/M systems and under MyZ80 sim. I
do that as my collection of CP/M machines is both large and frequently in
use.? Code portability is fairly important to me as I'm supporting
8080/8085/z80/Z180/Z280 systems and CP/M 1.4 though CPM3(cpm+).
Of course I don't expect the 8080/8085 machines to run Z80 code but
producing using suitable assembler is something I have done before.

This takes me back to the early 80s when, if the floppy format (or size)
wasn't the issue, the text and assembler formats were.? CP/M in 1980
suffered from?portability issues.? Back then Z80 source could be in not
less than 4 formats extended 8080(intel) style opcodes, TDL opcodes
that were Intel 8080 like but different, Zilogs' manual, and?at least
three Z80 assemblers that all varied for syntax and pseudo ops.

So all this makes sense as to purpose the original plan was build
a generic BIOS without any FAT filesystem for uSD, based on
your work for the uSD handler and the Z80MC as the foundation to
side step hardware build.??Its also pretty slick Z80 build as it allows
for banked lower memory and three IO.??

The target is to modify one of my three Epson PX-8s with uSD as mass storage
to replace and be both larger and faster storage than the slow microcassette
that had failed in that one.? I've done it with CF but that is a bit more complex
hardware, larger, and uses more power.? ?The upside is the way to "install"
the device code in the software (BIOS) as transient (not part of the cold boot
image) was well developed by others and simple to implement.


Allison


Re: A Z80 Asm rec

 

Need to find out how ASMZ80 does it.? Perhaps you will need to mask the address and shift it?

LD L, LED_DISPLAY_SB & 0xFF
LD H, HIGH_SCAN_PTR >> 8

Need to read the ASMZ80 manual to see how they handle it.



On Friday, December 29, 2023 at 06:44:30 p.m. EST, ajparent1/kb1gmx <kb1gmx@...> wrote:


I thought I had the assembler used...

ASMZ80? does not digest the following:

? LD? L,LOW LED_DISPLAY_SB? ;Restart Pointer to Secondary Buffer
? LD ? ? ? ? H,HIGH SCAN_PTR
? OR? ? ? ? LOW LED_DISPLAY

Best guess is it extracts the LOW or HIGH byte of the address of that variable or the 16 bit variable.

Any other ways around this??


Allison


Re: A Z80 Asm rec

 

Never mind...? Even if the cross assembler were right I'd still have to heavily edit
the code for a CP/M native assembler.

I'd briefly considered feeding the ZASMV20 to BDS C compiler but it was
unlikely it would not fit in memory with enough working space.


Allison


Re: A Z80 Asm rec

 

I thought I had the assembler used...

ASMZ80? does not digest the following:

? LD? L,LOW LED_DISPLAY_SB? ;Restart Pointer to Secondary Buffer
? LD ? ? ? ? H,HIGH SCAN_PTR
? OR? ? ? ? LOW LED_DISPLAY

Best guess is it extracts the LOW or HIGH byte of the address of that variable or the 16 bit variable.

Any other ways around this??


Allison


Re: Z80 1st boot (wooot!)

 

Just a note there were versions of CP/M late in the game for Z8000 and 68000
that were the basic system written in C.? It turns out the 68K? had a instruction
set remarkably close to PDP11 and VAX which was the extension of the
PDP-11 16 bit CISC instruction set to 32bit.? The Z8000 a 16bit machine was
also closer to PDP-11 than Z80.

The cross compiler for those versions ran on DRCs VAX 11/750.?

Sources for asm and C versions are on line at Gaby's site.


Its familiar to me as I helped Tim create the the early compilations
back then mostly asm code and some PLM.

Allison


Re: Z80 1st boot (wooot!)

 

>>I would guess that if ever CP/M could run on a VAX, it would be an emulation. <<

A way late coooment as I didn't see it then...
I was a digit, aka DEC employee and lived in the central engineering world.
I got to see a lot of really cool stuff.

It was available three ways:

+Using the SIMH CPU/system emulator.
+There was a third party board that plugged into a VAX backplane and provide direct execution
?on z80 and the VMS OS provided disk and terminal IO services..
+ and some crazy guy used the CP/M 68K sources that were written in C and made a version
?that booted natively on a VMX (microVAX 3100) He was a member of the NETBSD on VAX?
?development team.

+ Actually there was also a version using the 68K C code that ran as a user application.
? It required VMS as it was a user application rather than booting on the base sysytem.



Another SBC And...

 
Edited

years (many) I built a xz80 machine around the Z80/dart/CTC/eprom and ram
and as a change up for early 80s 1982 end of year to be precise...?
BM? bubble memory actually magnetic bubble memory.? I was lucky
enough to get two BPK7720 bubble memory boards each doing 128Kbyes.
Cost was about the same as a 5.25" floppy drive.? ?The Intel part with
supporting ICs was 1980s tech not in existance in the 70s.? TI had the
magnetics part earlier but the supporting ICs so it took a lot to make
their part work and it first appear as local memory in the Silent 700
series as?replacement for ASR33 TTY.? The later 745 had a
bubble memory for local storage for later transmission.

What brought that to mind is Scott Bakers revisit...


I still have the system I built up, and its operational.? All three boards
two BMC (256KB storage) and Z80SBC.? The downside for BM system
was high power drain when active and it wasn't very fast compared to
an average floppy.? It did run CP/M-V2.2.? IT highlighted the problem
of CP/M, floppy sized disks are too small.? To save as much of the
BM for storage the whole monitor, OS, and Bios was loaded into
the first 16K (27128) part available then rather than loaded from disk.

Building physically small systems that are high performing at the
single board level has been a long time thing.? The things that made
Z80MC and similar possible was larger rams?(32k bytes and larger),
large Eproms, and enough integration of IO (Z80 dart/SIO) to cut
the parts count to very few mostly glue parts.

The addition of uSD makes for smaller but lots of storage, CMOS?
parts like Z80, SIO, and other parts in the early 80s made
battery power a practical enterprise.


Allsion