Jump to content

Photo

Any info on Video Technology Laser 500 computer?


193 replies to this topic

#176 carlsson ONLINE  

carlsson

    Metagalactic Mule

  • 7,069 posts
  • Location:Västerås, Sweden

Posted Wed Jun 13, 2018 11:17 AM

Barely anyone, I think. From time to time I'm considering working on my game but not much in the past years.

#177 nippur72 OFFLINE  

nippur72

    Space Invader

  • 39 posts

Posted Wed Jun 13, 2018 1:14 PM

I would like to write some game in assembler for this vintage, it's something I craved at the time but had not enough knowledge to achieve it. So after 30 years I want to "close the circle" so to speak.

 

I'm thinking about a "sprite" routine, but I don't even know if this machine is able to switch the graphic page or to sync to the raster. Any clue?



#178 carlsson ONLINE  

carlsson

    Metagalactic Mule

  • 7,069 posts
  • Location:Västerås, Sweden

Posted Wed Jun 13, 2018 3:06 PM

Regarding the graphics capacities, it seems the jury is still out so to speak. As you know, the question has been raised multiple times in this thread with various hints about what it could do, but no definite answers. I even typed in your program from back in the days which had some advanced features though I didn't really get it to work as I imagined it should.

 

I would love to be able to use custom character graphics, even if only limited to 20 something and not suitable for software sprites. However I'm afraid that is not doable, only bitmapped graphics which is a different chapter.



#179 nippur72 OFFLINE  

nippur72

    Space Invader

  • 39 posts

Posted Thu Jun 14, 2018 11:27 AM

unfortunately definable characters are not possible because text mode is drawn by the chip itself (without looking into RAM), but bitmapped graphics should be OK I think.

 

The only matter is whether it's possible to have some sort of double buffer, e.g. moving the pointer of "bitmap RAM start".

 

On a different topic, is there a way to load/save programs from/to a PC (via audio cable) ? 



#180 nippur72 OFFLINE  

nippur72

    Space Invader

  • 39 posts

Posted Thu Jun 14, 2018 12:55 PM

Trying to understand the bank switching thing... what do "4164x8" and "4416x2" mean on the manual page?

 

I just tried the MAME emulation, it's awful, cursor keys aren't working and it seems there is no emulation for the "RESET" key. And it's prone to hanging. Does anyone experience the same issues?



#181 Bonstra OFFLINE  

Bonstra

    Combat Commando

  • 5 posts

Posted Thu Jun 14, 2018 3:47 PM

Trying to understand the bank switching thing... what do "4164x8" and "4416x2" mean on the manual page?

It describes the RAM chips layout on the PCB: 4164 and 4416 are the RAM chips reference, ×8 and ×2 are the number of RAM chips put in parallel on the bus.

 

The 4164 is a 65536 bits DRAM chip. It has a single data I/O line, which is why you need 8 of them to form 65536 words of 8 bits; each chip data line is tied to one line on the VLSI data bus.

In the Laser 500, those are what is backing the RAM banks 4 through 7.

The Laser 700 has 16×4164 (or more accurately, 2×8×4164), filling banks 4 through 11 (the built-in 128 KB).

 

The 4416 is a 16384×4 bits DRAM chip with 4 data I/O lines. You need two of those chips to get the 16 KBytes of built-in RAM in the Laser 350. The first chip is used to store the lower 4 bits while the second chip contains the higher 4 bits.

This is what is behind bank 3 on the Laser 350 (not present on unexpanded Laser 500/700).



#182 carlsson ONLINE  

carlsson

    Metagalactic Mule

  • 7,069 posts
  • Location:Västerås, Sweden

Posted Thu Jun 14, 2018 3:58 PM

Yes, I noticed that a number of keys are not emulated in MAME, that is why I had to rewrite the Flipper listing I typed in before.

Regarding loading and saving, I found that MAME saves programs as WAV or something like that so a file saved in the emulator can be played back to load onto a real Laser computer, perhaps with adjusting the volume and/or phase. See my previous posts in this topic, I think I descripbed what I did to get it to work.

#183 Bonstra OFFLINE  

Bonstra

    Combat Commando

  • 5 posts

Posted Thu Jun 14, 2018 4:59 PM

I'm thinking about a "sprite" routine, but I don't even know if this machine is able to switch the graphic page or to sync to the raster. Any clue?

The video hardware allows to switch between banks 3 and 7 (bit 3 of port 0x44, 0=bank 7, 1=bank 3), but it is pretty much useless in practice since the unexpanded Laser 350 doesn't have any RAM in bank 7, and the unexpanded Laser 500/700 doesn't have any RAM in bank 3.

And I'm not even sure the Laser 500/700 can be expanded to add the missing 16KB in bank 3.

 

For video sync, the Z80 interrupt line is directly connected to the VSYNC line of the VLSI. You can hook on the BASIC ROM interrupt routine by changing the vector at address 0x8012 (it is a RET instruction by default).

 

Quoting the manual:

 

 

USER INTERRUPT ROUTINE

The CPU will be interrupted for every 20 ms. The interrupt service routine will push all registers to stack, and call an exit point at location 8012H. When power up this location is initialized to RET. The user can modify this vector to jump to his service routine if he wish



#184 nippur72 OFFLINE  

nippur72

    Space Invader

  • 39 posts

Posted Fri Jun 15, 2018 6:45 AM

It's a disgrace that the emulator is so poor, but I've registered to MAMETesters.org in order to submit bug reports. 

 

Any info on timers, I/O and all the rest? I was thinking that it might be helpful to disassemble the ROM, but I'm not much into Z80. Any good disassembler?



#185 nippur72 OFFLINE  

nippur72

    Space Invader

  • 39 posts

Posted Sat Jun 16, 2018 3:26 AM

Some more questions:

 

- what is bank "E" (labeled ROM) in the memory map? Is it different from bank 1/2 and is it available in a standard machine? Perhaps it's where DOS commands are installed with the disk drive interface ?

 

- in MAME emulator there is a 2K rom file named "27-393-00.u10" ... what's supposed to do? (It's not Z80 code, it's some data).

 

- when starting MAME it says: "One or more ROMs/CHDs for this machine have not been correctly dumped." ... any clue on what went wrong?

 

I am going to disassemble the 32K ROM with "dZ80"... damn it the Z80 istruction set is HUGE!



#186 Bonstra OFFLINE  

Bonstra

    Combat Commando

  • 5 posts

Posted Sat Jun 16, 2018 9:29 AM

- what is bank "E" (labeled ROM) in the memory map? Is it different from bank 1/2 and is it available in a standard machine? Perhaps it's where DOS commands are installed with the disk drive interface ?

Banks C through F are for expansion ROM, made available through the expansion connector.
At startup, the BASIC ROM will look for a magic value (byte sequence AA, 55, E7, 18) in banks 2, C, D, E and F (in that order), and transfer execution to that ROM bank at offset 0x0004 if such a value is found (the bank gets mapped at 0000-3FFF in Z80 address space).

The manual mentions that the BASIC ROM can detect the presence of the disk unit interface by writing the I/O port 0x13 and reading back the result (this is the data buffer, so if the disk interface is present, you should read back the same value you've written).
And if the disk interface is present, the sector 0 of track 0, will be loaded to memory location 0xA200, and execution will resume at that location (after checking that the boot signature is there, I assume).
So it appears there is a least minimal support for the disk drive interface in the BASIC ROM, but it doesn't exclude loading a fuller support from an expansion ROM module.
 

- in MAME emulator there is a 2K rom file named "27-393-00.u10" ... what's supposed to do? (It's not Z80 code, it's some data).
- when starting MAME it says: "One or more ROMs/CHDs for this machine have not been correctly dumped." ... any clue on what went wrong?

It must be the character generator ROM, used by the VLSI to draw the characters to screen in text mode. IIRC, MAME knows only one chargen ROM, but there are actually regional variations (accented characters for France, pound sign for the UK, …).

As for the warning, a comment in the code says that the ROM was dumped using the wrong size: only 2KB were dumped, while the 2764 is a 8KB EPROM, hence the warning.
I don't think it matters much for the usual text mode emulation purposes, but MAME maintainers are thorough people, and since all the address lines are connected to the VLSI, the other 6KB must be used for something, right? ;)



#187 nippur72 OFFLINE  

nippur72

    Space Invader

  • 39 posts

Posted Sat Jun 16, 2018 10:39 AM

Thanks for the info! Yes I just checked and the small rom file contains the character generator (128 normal + 128 reversed).

 

I've found part of the bank-checking routine you mentioned (see below) but I could not track where it passes control to 0004h. The Z80 istruction set is still too unfamiliar to me. 

66A1  ld      b,05h
      ld      de,66bdh
66A6  ld      a,(de)
      out     (40h),a   ; switches on the 1st bank because he is now on the 2nd (66A6h)
      call    66c2h     ; compares with AA 55 E7 ...
      inc     de
      djnz    66a6h
...
66bd 02 0c 0d 0e 0f 

Edited by nippur72, Sat Jun 16, 2018 10:40 AM.


#188 nippur72 OFFLINE  

nippur72

    Space Invader

  • 39 posts

Posted Mon Jun 18, 2018 10:50 AM

My Laser 500 just arrived! I'm happy as a child  :)  :-D. I haven't touched this machine since the late '80. WOW.

 

- the unit is in pretty good state, doesn't seem to have been used much

- I have the QWERTY model, with ANTENNA/TV connector in place of RGB. It is possible to choose between CH3 and CH3 via a little switch on the back (anyway I haven't tested it)

- no PSU included, but I've plugged to it a 9V DC positive central power supply (thank to the info on this thread). It works even with 0.5 mA but the power supply gets really hot. And by giving less than 9V the image flickers considerably. 

- the keyboard is quite responsive, much more than I remembered

- image quality using composite video is rather BAD on my LCD screen. I am puzzled as it was crisp on my old TV. Now it's like there is a VIC20 attached (if you know how that machine looks). But if I switch to monochrome (via the switch on the back) it's very sharp (but alas, no color!). 

- typed in my first basic program, it's incredible how the brain is able to retrieve long forgotten memories. 

- When scrolling (LIST or PRINT outputs) use the SPACE bar to pause resume the scrolling.

- I was unable to remember how to use USR() to give control to machine language, wasn't it PRINT USR(address) ?

- I tried to figure where the boot routine is located, I thought it was just 0 since the Z80 starts from there, but that gives just "Ready". I've found instead &H66EF does boot the machine, e.g. MON + return + 66EF G



#189 carlsson ONLINE  

carlsson

    Metagalactic Mule

  • 7,069 posts
  • Location:Västerås, Sweden

Posted Mon Jun 18, 2018 10:55 AM

You use CALL to run a machine language routine. See for example the Flipper listing I typed in last year.

 

http://atariage.com/...uter/?p=3792347

 

I will have to try my Laser 500 on various displays, CRT vs LCD. It is an AZERTY model with antenna + composite video.



#190 nippur72 OFFLINE  

nippur72

    Space Invader

  • 39 posts

Posted Wed Jun 20, 2018 5:26 AM

I've submitted a bug report for the not working keys in MESS/MAME:

 

http://mametesters.o...iew.php?id=7021

http://mametesters.o...iew.php?id=7022



#191 nippur72 OFFLINE  

nippur72

    Space Invader

  • 39 posts

Posted Fri Jun 29, 2018 11:16 AM

By looking at the list of BASIC tokens, I see that TIME$ (aka TI$) is missing... which is puzzling me as I really can't remember how we used to measure time in this machine (if we ever did it).

 

I wonder if there is some sort of technical reason behind this missing feature... or they were just lazy and didn't implement it?



#192 carlsson ONLINE  

carlsson

    Metagalactic Mule

  • 7,069 posts
  • Location:Västerås, Sweden

Posted Fri Jun 29, 2018 4:11 PM

If it has a timer or clock, it probably runs some bytes in memory that you could PEEK, if only you know where to look. I'm not sure that TIME$ was particularly universal even among Microsoft BASICs, much less other implementations. David A Lien writes in the BASIC Handbook based on his 1981 edition that TIME$ mainly exists on PET and DEC computers, though it might be available elsewhere too.

#193 The Usotsuki OFFLINE  

The Usotsuki

    Stargunner

  • 1,959 posts
  • Also called "Licca"

Posted Fri Jun 29, 2018 11:27 PM

I think Microsoft only supported TIME$ on MS-DOS?



#194 nippur72 OFFLINE  

nippur72

    Space Invader

  • 39 posts

Posted Sat Jun 30, 2018 8:34 AM

yes, GW-BASIC on MS-DOS had TIME$.

 

I really want to reverse engineering the ROM kernel, to see what the machine does in the little details. I wonder whether it shares pieces of code with other machines (110,210,310). But it's a big effort.

 

I also would like to write a custom assembler language for the Z80 in order to make it more human-readable (I already did the same for the 6502 and it's pretty nice). But that's another big project  :(






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users