Re: BASIC for the CBM-II/8088

From: Mia Magnusson <mia_at_plea.se>
Date: Mon, 23 Jul 2018 23:24:17 +0200
Message-ID: <20180723232417.00002343@plea.se>
Den Fri, 20 Jul 2018 13:41:44 +0200 skrev Michał Pleban
<lists@michau.name>:
> Mia Magnusson wrote:
> 
> > Not sure which versions of V20 that's easy to source today. 
> 
> I bought some 20 MHz ones on Ebay a few months ago (and they work in
> the 8088 card like a charm ;-))

Nice!

> > I think somewhere around DOS 3.x support for network started to
> > appear. I assume it would be a lot of work, but it would be kind of
> > nice to install the CBM Kernal API as a file system handler to DOS.
> 
> Yes, DOS 3 introduces a network redirector interface. I have never
> looked at this interface but in theory it could work. However, I have
> no idea how much memory it would take on the 6509 side where space is
> already very tight.

My impression is that the DOS network software can do whatever API
translations necessary and then redirect the actual call to the 6509
Kernal. The main problem is probably the lack of seek() which must be
emulated and will cause problems when writing. But just being able to
read/write files sequentially might be a nice thing to have.

I'm not sure but I think that this "redirector" thing needs different
code for each DOS version though :(

> > (Not sure how the 8088 card, with either your or the original BIOS,
> > handles character devices but I assume it would be trivial to add
> > support for printers and the rare IEEE-488 modem and
> > IEEE-488<->rs232 converter boxes).
> 
> It is indeed quite easy. The original card software already had some
> rudimentary support for IEEE printers, which would unfortunately not
> work in MS-DOS however, because the 8088 code part is buggy, hangs the
> processor due to stack mismanagement and even tries to call INT 17
> (!!). The support of the IEEE modem was also present but unused by
> MS-DOS; I removed it to save space.

I assume almost no one has serial devices on IEEE-488 anyway.

> > As the P500 is rare itself, but as it afaik uses non-rare parts
> > (except for the triports and the CPU) I assume there isn't that
> > much risk of destroying expensive part by trying. Maybe we can
> > convince someone here on the list who has a P500? :)
> 
> My P500 is in storage. I can go fetch it, but first I would like to
> finish the video memory emulation.

I'm impressed that you actually finish one (part of a) project before
starting the next project ;)

Did you+Ruud order enough boards for you to have a board in your B and
P at the same time?

> > Yeah, I know. My idea was that the conversion might take about as
> > much longer time than a pure copy as the 8088 is faster than the
> > 6509, making them process each byte at about the same speed. It
> > would take some machine code programming with cycle counting to be
> > able to transfer a bunch of chars without handshake, but as it can
> > be done between a 1541 and a C64 it should be possible between the
> > 8088 and the 6509 on a B :)
> 
> You cannot transfer data without synchronization, because the 8088
> execution time is nondeterministic - it can be stopped by the
> mainboard to refresh the DRAM at undetermined moments in time. So no
> matter what you do, you cannot write cycle-exact code for the 8088.
> That's why I wanted to synchronize the CPUs with the SO pin.

Oh, missed that. To be honest I'm not sure how refresh works when using
a coprocessor. There are some synchronisation stuff that seems to be
disabled by _BUSY2_...

But you could do the transfer and after the 6509 is finished check if
the 8088 is in sync, if not redo the transfer. Or wait for the next
refresh and start directly after that. A bit hard, probably not worth
the effort, but still.

Btw if it would be possible to turn off refresh, the refresh might not
bee needed, at least if the copy can start at any location as the copy
accessing every byte of a 2k block will afaik in itself refresh the
drams.

Anyways with refresh enabled it would be sufficient if the 6509 checks
that the 8088 has written another byte, but the 8088 doesn't have to
check if the 6509 has read the byte (if interrupts on the 6509 side are
disabled).

> What I ultimately want to do is to make the 8088 read a byte and
> convert it, then issue it via an IO port to the 6509 which will place
> it in the video memory, while the 8088 is already busy fetching
> another one.
> 
> But it is a nontrivial task, so my first version will have the 6509
> simply refresh the screen once a second as a proof of concept.

Yeah, it's always the best idea to start with the simpler but slower
solution.


-- 
(\_/) Copy the bunny to your mails to help
(O.o) him achieve world domination.
(> <) Come join the dark side.
/_|_\ We have cookies.
Received on 2018-07-24 00:00:30

Archive generated by hypermail 2.2.0.