Page 3 of 5

Posted: Fri Nov 17, 2006 4:12 am
by Mike
Before someone else does the same:

I've reverse-engineered the object-code of Waterloo BASIC. I made a fully relocatable source-code from the *.prg; with labels; instructions and data clearly separated. If there's substantial interest, I plan to merge Waterloo BASIC and MINIGRAFIK. Maybe I'll include a disc drive fast loader as well.

From the analysis of the source-code I can give some more info:

The LIST command had been slightly altered, it now also accepts a comma as range-separator, i.e. LIST 10,20 works like LIST 10-20.

All new tokens are internally extended with 2 bytes, that contain a cached TXTPTR - the destination of the command, if it diverts the control flow.

Greetings,

Michael

Posted: Mon Dec 04, 2006 10:53 pm
by eslapion
Well, what do you know... I just recovered a JEWEL!

I have the complete instruction manual for the VIC-20's version of Waterloo Structured Basic. It has 191 pages.

The software and book was created by D.D. Cowan, J.W. Graham, J.W. Welch and T.A. Wilkinson.

The book is © 1983.

Hey guys... I really want to archive this so you can get access to it but thats a LOT of work... can anyone help ?

Posted: Tue Dec 05, 2006 2:09 am
by Mike
I'm currently dissecting HYPRA-SYSTEM (fast LOAD from and fast SAVE to floppy) for inclusion into this project. I also plan to include the VIC Wedge.

1. HYPRA-SYSTEM uses a buffer within itself (much alike to TurboDisk) but that can be handled, as well as a small bit of self-modifying code.

2. VIC WEDGE alters the CHRGET routine, and checks an address within the line-input routine of the interpreter. Since the line-input is transferred to Waterloo Basic, that address will need to be altered.

So this is the near complete list of programs I'd put into BLK 5:

- Waterloo Basic (2K)
- MINIGRAFIK (1K, enhanced version)
- Hypra-System (2K)
- VIC Wedge (< 1K)

For Hypra-System, it would be favourable to have a buffer at $9800 (I/O 2) or $9C00 (I/O 3).

Eslapion, how much would you charge for an 32K expander with:

* BLK 1, 2, 3 filled with RAM.
* BLK 5, switchable between RAM/ROM, and write protect option for RAM.
* I/O 2, and I/O 3 filled with RAM.

Greetings,

Michael

Posted: Tue Dec 05, 2006 9:14 am
by nbla000
Mike wrote:Before someone else does the same:
Maybe I'll include a disc drive fast loader as well.
I'm interesting on Fast Loader for 1541/1581, looking on various post i will use source code of VIMM project (Marko Makela) fast loader routines to write a fastloader program for a Vic-20 but if you include a disc drive fast loader in your project i'm waiting for a while. Do you have some samples PRG source etc to test it? how does it works? thanks, bye.
maybe too many questions :wink:

Posted: Tue Dec 05, 2006 4:25 pm
by a1bert
nbla000 wrote:I'm interesting on Fast Loader for 1541/1581, looking on various post i will use source code of VIMM project (Marko Makela) fast loader routines
Actually, Marko is not involved in VIMM other than that the fastloader is based on the fast loader from "Veni Vidi Vici". The 1581 code was developed by me.

Talking about demos, some time last spring I NTSC-fixed almost all of the VIMMII parts, but one part just didn't work the same in VICE than the actual machine and I never was energetic enough to finish the job.

-Pasi

Posted: Tue Dec 05, 2006 6:07 pm
by MacbthPSW
a1bert wrote:Talking about demos, some time last spring I NTSC-fixed almost all of the VIMMII parts, but one part just didn't work the same in VICE than the actual machine and I never was energetic enough to finish the job.
We'd love to see it if you ever finish it! I remember trying to watch it on my NTSC VIC-20 some years ago. If I remember right, the first part works okayish, and then it dies (from the loader?). Edit: now that I think about it more, I think it was VVV that I was remembering.

I'm pretty sure an NTSC-fixed "Risen from Oblivion" (for the C-128) is going to be released shortly, would be cool if the VIC also got a top notch release around the same time. Both platforms could use a lot more demos.

Posted: Wed Dec 06, 2006 1:43 am
by eslapion
Mike wrote:For Hypra-System, it would be favourable to have a buffer at $9800 (I/O 2) or $9C00 (I/O 3).

Eslapion, how much would you charge for an 32K expander with:

* BLK 1, 2, 3 filled with RAM.
* BLK 5, switchable between RAM/ROM, and write protect option for RAM.
* I/O 2, and I/O 3 filled with RAM.

Greetings,

Michael
If you put the code for Hypra into BLK5 then it cannot be used to load ROM images of games that uses that BLK.

However, adding a 2k ram section for I/O2 and 3 is very easy. A 6116 (2k x 8) SRAM chip can be stacked on top of the 32k chip. I can use a pair of diodes to create an additionnal AND logic gate for the CS line.

What you want is equivalent to a base 32k expander with one ROM option in BLK5. The write protect option (RW/RO switch) comes standard with all expanders. The only thing special is the extra 2k ram.

My price: Base expander is 30$ + 5$ for 1 ROM option + 10$ for the extra 2k RAM.

Does that sound reasonable ?

Posted: Wed Dec 06, 2006 3:10 am
by nbla000
My price: Base expander is 30$ + 5$ for 1 ROM option + 10$ for the extra 2k RAM.

Does that sound reasonable ?
Yes, that's sounds good!!!

But for me the first question is to have a working fastloader for 1541/71/81 drives that works simply loading it LOAD"FASTLOADER",8,1.
Yes i know that if you use bank 5 you cannot load cartridge image but may be a first step, after a lot of testing and optimizations it can be modified.
Actually, Marko is not involved in VIMM other than that the fastloader is based on the fast loader from "Veni Vidi Vici". The 1581 code was developed by me.
Thank's for the specification my post was just a fast explanation of my future :?: works.

In any case i'm happy to see that a fast loader for Vic-20 is not only a my wishing list.

Anyone says which differences there are from Hypra-Load and Marko Makela's fast load based routines, which may be more compatible with normal and pucrunched files?

Posted: Wed Dec 06, 2006 3:15 am
by Mike
@nbla000:
Do you have some samples PRG source
I've completely separated instructions and data, and inserted labels into the part of the speeder that runs in the VIC. I'll send you the original *.PRG file via e-mail.
etc to test it? how does it works?
It's an "old style" floppy speeder, that puts some code in the drive and then uses a 2-bit parallel protocol (CLK and DTA) over the serial bus. The loops are timed out with NOP's, so it is PAL and 1541 only at the moment. With the source available soon, it should be possible to make a conversion to NTSC. It achieves roughly 4-5 times speedup with both LOAD and SAVE.

@eslapion:
Does that sound reasonable?
That's a good offer. It will take another few - free - evenings for me to complete the ROM - I'll PM you when I've done it.

Greetings,

Michael

Posted: Wed Dec 06, 2006 4:41 am
by a1bert
nbla000 wrote:Anyone says which differences there are from Hypra-Load and Marko Makela's fast load based routines, which may be more compatible with normal and pucrunched files?
Well, the fastloaders we are using in VIC20 demos do not achieve the fastest possible transfer speed because they are designed to be interruptable at any point. They have 2-way handshaking using both CLK and DATA lines, which makes it 4-20(?) times slower than a fastloader that transfers a byte at a time using both CLK and DATA for transfer.

Because the transfer is interruptable, loading can be easily performed while demo parts are active. Well, you could still make parallel byte transfers, but then you would need to check if there is enough time to perform the transfer before the next interrupt. Because the timer interrupt is used for raster interrupt generation, that would be fairly easy to implement now that I think about it.

-Pasi

Posted: Wed Dec 06, 2006 5:52 am
by nbla000
Thank's a1bert for your explanation

Since i want after 25 years to use a working fastloader for Vic-20 and 1541/1581 drives i'm searching a starting point to write ones if nobody has already done.

Mike has send me a first prg version of his Hypra-System (thanks again Mike) that works for 1541 drives in Pal mode only for now.
I've tested it and results are very impressive, 100% of programs and games tested (using VICE in emulation only for now) works and starts quickly (Basic, ML, unexpanded, 3/8/16k expanded, pucrunched or not)

Now i think that if Mike wants his project it's a good start point and we can merge our knowledge to do a first complete fastloading system using a1bert/-pasi 1581 information too

It's a nice idea?

Posted: Wed Dec 06, 2006 2:55 pm
by eslapion
nbla000 wrote:Since i want after 25 years to use a working fastloader for Vic-20 and 1541/1581 drives i'm searching a starting point to write ones if nobody has already done.
JiffyDOS ?

Posted: Thu Dec 07, 2006 2:22 am
by nbla000
eslapion wrote:JiffyDOS ?
JiffyDOS is an hardware solution, i don't like to modify Vic-20 and drives, my best choice is a cartridge and/or a loader as first file of a 1541/1581 disk

Posted: Thu Dec 07, 2006 9:15 am
by carlsson
By the way, earlier this year I extracted the fastloader from VIMM and made it a loadable program. It works reasonably well, but there was some last issues or features that I wanted to add before publishing it. If anyone is interested, I can upload the code later tonight, so nobody needs to re-invent the wheel once more.

Posted: Thu Dec 07, 2006 10:13 am
by nbla000
carlsson wrote:I extracted the fastloader from VIMM and made it a loadable program.
Very interesting, with 1581 drive support too?
carlsson wrote:there was some last issues or features that I wanted to add before publishing it.
I suggest a very useful future like Action Replay 6 cartridge for the C64
Typing command $ or $8 or $9 display directory on screen and not load it in memory.
carlsson wrote:If anyone is interested, I can upload the code later tonight, so nobody needs to re-invent the wheel once more.
I agree, sources are appreciated.



Denial: if not there were it would have to invent it :!: