Platis Posted November 19, 2015 Share Posted November 19, 2015 How compatible are floppy drive/interface/controller between 200 and 500? Anyone ever used or own a floppy drive to the Laser 200? Quote Link to comment Share on other sites More sharing options...
nippur72 Posted November 20, 2015 Share Posted November 20, 2015 I don't think they are compatible. We had both 310 and 500 but as far as I can remember we never used the disk drive on the 310. Consider that the drive was plugged on the L500 through a sort of memory expansion which also extended the basic with commands like "DLOAD", "DIRECTORY" etc.. That makes me think it was a 500-only feature (I vaguely remember the basic booted showing V3.51 as version number). We had also a diskette with CP/M for the L500, but we never used it because CPM was totally unknown to us. All I remember is that it booted to a 80 column black screen and dos prompt, with regular CP/M commands. Quote Link to comment Share on other sites More sharing options...
carlsson Posted November 20, 2015 Share Posted November 20, 2015 I've been asking myself the same question, ranging over the entire or at least most of the VTech Laser range. It seems to me like a lot of engineering work to come up with one set of peripherals for each model, so at least some part of it should be the same. I know data recorders for the 200, 350, 500, 2001 must be interchangable, but those use regular mic/ear so not Laser specific. Quote Link to comment Share on other sites More sharing options...
carlsson Posted December 14, 2015 Share Posted December 14, 2015 How about the sound capability of Laser 350/500/700 ? I just dug out Scheidegger's Easybit BASIC programming course (in Dutch) and the SOUND command works like this: SOUND frequency,duration Frequency: 0 - Silence 1 - A0 2 - A#0 3 - B0 4 - C1 etc up to 28 - C3 29 - C#3 30 - D3 31 - D#3 Higher frequency than so yields a ILLEGAL FUNCTION CALL error. Duration; 0 - Error 1 - 1/8 second 2 - 1/4 second 3 - 3/8 second 4 - 1/2 second 5 - 3/4 second 6 - 1 second 7 - 1 1/2 seconds 8 - 2 seconds 9 - 3 seconds 10 - 20 seconds (estimate) 11 - just below 3 seconds (est) 12 - 5 seconds (est) 13 - 16 seconds (est) and so on.. So yes, one square wave tone generator with a range of 2.5 octaves and reasonable but not perfect duration resolution. There may be other ways to call the sound too, but that is from BASIC. Unfortunately this BASIC course doesn't mention graphic capabilities by a word. It stops at introducing 40 and 80 column text modes and plotting graphs using the TAB command and asterisks. It doesn't even cover the COLOR command. Since my machine has an AZERTY keyboard, it doesn't make experimenting easier. At least CAPS LOCK will enable shifted numbers. Anyway, I found a web page that has the keywords listed: http://www.razzmoket.esy.es/basic.htm It makes it possible to draw some graphics, a quick example: 10 GR 3 20 FOR I=1 TO 15 25 COLOR I:MOVE(10,10) 27 DRAW(I*10,30):NEXT 30 IF INKEY$="" THEN 30 40 COLOR 0,15,15:TEXT 40 (Perhaps JamesD already figured out the syntax, I'm not sure) Quote Link to comment Share on other sites More sharing options...
JamesD Posted December 15, 2015 Share Posted December 15, 2015 (edited) I just dug out Scheidegger's Easybit BASIC programming course (in Dutch) and the SOUND command works like this: ... It makes it possible to draw some graphics, a quick example: 10 GR 3 20 FOR I=1 TO 15 25 COLOR I:MOVE(10,10) 27 DRAW(I*10,30):NEXT 30 IF INKEY$="" THEN 30 40 COLOR 0,15,15:TEXT 40 (Perhaps JamesD already figured out the syntax, I'm not sure) I haven't looked at it since my last post. I would expect some option on DRAW to select the color on the fly and possibly source pixel. Something like DRAW(x,Y,Color) or DRAW(X,Y),Color or maybe DRAW(sourceX,Y)-(DestX,Y),Color *edit* Nope Edited December 15, 2015 by JamesD Quote Link to comment Share on other sites More sharing options...
JamesD Posted December 15, 2015 Share Posted December 15, 2015 I took another look at the keyword table. The first and last character of keywords are both altered from the standard ASCII value.Anding the last character with 127 (01111111) makes the last character normal.The first character is... complicated.The W in WIDTH, WAIT, WHILE, WEND, and WRITE is a different value each time. Quote Link to comment Share on other sites More sharing options...
JamesD Posted December 15, 2015 Share Posted December 15, 2015 I took another look at the keyword table. The first and last character of keywords are both altered from the standard ASCII value. Anding the last character with 127 (01111111) makes the last character normal. The first character is... complicated. The W in WIDTH, WAIT, WHILE, WEND, and WRITE is a different value each time. I updated the BASIC program I posted so you can see what I'm talking about 10 A=7196 : REM START ADDRESS $1C1C 20 B=PEEK(A) 30 REM SKIP FIRST CHARACTER OF KEYWORD FOR NOW 40 REM 50 PRINT B; 60 A=A+1 70 B=PEEK(A) 80 IF B>127 THEN 110 90 PRINT CHR$(B); 100 GOTO 60 110 B=(B AND 127) 120 PRINT CHR$(B) 130 A=A+1 140 IF A < 7851 THEN 20 Quote Link to comment Share on other sites More sharing options...
carlsson Posted December 15, 2015 Share Posted December 15, 2015 Yeah. I made a modified version of your program yesterday, where I'd OR with 32 for values < 32, and AND with 127 for values > 127. I noticed the oddity as well and was about to post an estimated list of keywords, when I found the link to the French page in Spain which has all keywords already listed. Most of my educated guesses seem true. You can use COLOR to change just foreground colour, but I agree that an extra argument to the DRAW etc commands probably would make it more convenient. The reason I mentioned your name was that I saw earlier this year in a different thread in the Atari 8-bit section, you were trying to port a "hat drawing program" to as many systems as possible and mentioned the Laser 500 among those, but I didn't see any listing at that time. I had hopes the above linked page would contain some downloadable software, but it doesn't seem to. It has some technical details about memory maps etc though, so a meaningful resource anyway. Quote Link to comment Share on other sites More sharing options...
nippur72 Posted December 15, 2015 Share Posted December 15, 2015 regarding SOUND command being arranged in semitones instead of frequency, I remember a quick "piano" program I used to write: 10 A$=INPUT$(1) 20 X=INSTR("Q2W3ER5T6Y7UI9O0P",A$,1) 30 SOUND X,2 40 GOTO 10 1 Quote Link to comment Share on other sites More sharing options...
JamesD Posted December 15, 2015 Share Posted December 15, 2015 Yeah. I made a modified version of your program yesterday, where I'd OR with 32 for values < 32, and AND with 127 for values > 127. I noticed the oddity as well and was about to post an estimated list of keywords, when I found the link to the French page in Spain which has all keywords already listed. Most of my educated guesses seem true. You can use COLOR to change just foreground colour, but I agree that an extra argument to the DRAW etc commands probably would make it more convenient. The reason I mentioned your name was that I saw earlier this year in a different thread in the Atari 8-bit section, you were trying to port a "hat drawing program" to as many systems as possible and mentioned the Laser 500 among those, but I didn't see any listing at that time. I had hopes the above linked page would contain some downloadable software, but it doesn't seem to. It has some technical details about memory maps etc though, so a meaningful resource anyway. I didn't get to the 500 for the Fedora plot. I was working on systems I had documentation for first. I was working on a Laser 2001 port but ran into so many emulator problems I decided I'd better quit while I still had some sanity remaining. The MESS emulation of the 500 looks pretty stable so it probably wouldn't be difficult. Pasting text seems to work well which makes porting pretty easy. The BASIC with the 500 appears to be pretty good but the way the first letter of the tokens are stored seems unique. At least I haven't seen anything like it before. Maybe some sort of logic or math operation with it's position in the table? Keyword wise it's pretty close to Microsoft BASIC with the exception of the unique syntax for it's graphics and sound commands. Simplified syntax such as leaving an optional color off of the DRAW command would make the interpreter smaller, though it makes BASIC programs larger. Quote Link to comment Share on other sites More sharing options...
carlsson Posted December 15, 2015 Share Posted December 15, 2015 (edited) Oh, look how pretty! And this is the machine that made it possible: 5 PI=ATN(1)*4 10 COLOR 15,0,1:GR 3 20 FOR I=0 TO 2*PI STEP .1 30 COLOR INT(RND(1)*15)+1 40 MOVE(80,96) 50 RX=INT(RND(1)*40)+20:RY=INT(RND(1)*40)+20 60 DRAW(80+COS(I)*RX,96+SIN(I)*RX) 70 NEXT 80 IF INKEY$="" THEN 80 90 COLOR 0,15,15 Because this BASIC seems to be missing the PI constant, I had to calculate it. Possibly I have mixed up SIN and COS as well regarding which should operate on X and Y, but I can't be bothered to look it up. In GR 3 mode, we have a resolution of 160 horizontal x 192 vertical pixels in 16 possible colours, which nicely avoids the colour clashes you'd otherwise see, but I figure it uses a chunk of RAM to use that mode. Edit: Bah, stupid me! I never used the RY variable. Well, it was just a test anyway. Besides I'm a little annoyed that this BASIC interpreter is one of those that require keywords to be separated by space when typing them in, otherwise you get runtime errors. I'm used to other dialects that either add spaces on their own, or don't need them at all. Edited December 15, 2015 by carlsson Quote Link to comment Share on other sites More sharing options...
JamesD Posted December 16, 2015 Share Posted December 16, 2015 Check the fedora thread. I posted code for the Laser 500. 1 Quote Link to comment Share on other sites More sharing options...
JamesD Posted December 16, 2015 Share Posted December 16, 2015 (edited) The stretched shape is because of MESS. *edit*That must have been after running the code a 2nd time so the screen was cleared to the proper foreground and background colors.Here is what it looks like otherwise. Edited December 16, 2015 by JamesD Quote Link to comment Share on other sites More sharing options...
31336haxx0r Posted March 7, 2016 Author Share Posted March 7, 2016 Holy cow! I wanted to sell my Laser 500 in the mean time but didn't get around to it. Now I think, with all the stuff you guys figured out, I'll kepp that thing. Quote Link to comment Share on other sites More sharing options...
nippur72 Posted March 7, 2016 Share Posted March 7, 2016 I remembered back in the days we used to have 80 A$=INPUT$(1) in place of 80 IF INKEY$="" THEN 80 Quote Link to comment Share on other sites More sharing options...
Platis Posted December 4, 2016 Share Posted December 4, 2016 (edited) Anyone had good luck in finding a manual for the Laser 500 yet? Edited December 4, 2016 by Platis Quote Link to comment Share on other sites More sharing options...
JamesD Posted December 4, 2016 Share Posted December 4, 2016 Anyone had good luck in finding a manual for the Laser 500 yet? You can barely find one of these computers, and you want a manual? What is it with people throwing out manuals for computers? Quote Link to comment Share on other sites More sharing options...
CatPix Posted December 4, 2016 Share Posted December 4, 2016 Anyone had good luck in finding a manual for the Laser 500 yet? I have it probably, but it would be in French if I have one Quote Link to comment Share on other sites More sharing options...
carlsson Posted December 4, 2016 Share Posted December 4, 2016 (edited) Didn't we extract commands with parameters before? That is probably as much as you'd find in the manual. The Laser 500 appears every now and then on eBay, so anyone seeking one would not have to wait for years unless of course you have a maximum bid. Edit: Yes, see here. If French is too difficult for you, try Google Translate or ask for help here. http://www.razzmoket.esy.es/basic.htm Edited December 4, 2016 by carlsson Quote Link to comment Share on other sites More sharing options...
carlsson Posted June 24, 2017 Share Posted June 24, 2017 These are the "commercial" games sold on tape, on the rear cover of the magazine: I haven't given up on finding some dumped games for the Laser 500, 700, 750 series. In the mean time I found this thread on a different forum, where the same user who posted a video on Flickr posted more screenshots. It seems he's got the entire (?) library of 8 games available on floppy disk, but as it was mentioned earlier in this thread, transferring Laser 700 software from disk to tape so it could be loaded on a 500 is not easily done. http://www.zonadepruebas.com/viewtopic.php?style=1&f=40&t=103 1 Quote Link to comment Share on other sites More sharing options...
nippur72 Posted June 25, 2017 Share Posted June 25, 2017 It shouldn't be so difficult, the games had no copy protection if I remember well, so it should be a matter of DLOAD and then CSAVE. There was also BSAVE for saving chunks of memory (or perhaps it a MONitor command, I don't remember). 1 Quote Link to comment Share on other sites More sharing options...
carlsson Posted June 25, 2017 Share Posted June 25, 2017 I had a go trying to type in Nippur72's listing on page 2. The magazine scan is not of the highest resolution, so I may have made some typos. Furthermore, his game depends on joysticks, which don't seem to be emulated in MAME. I tried to replace that with INKEY$ to read the keyboard. Probably there are few bugs somewhere, because the game looks more like Doodle than Snake, Qix or anything else it is supposed to. I don't know how to score or die, but that might due to typos in the listing. Lines 300, 301, 320, 540 are altered on purpose. The combination of lower and upper case in the instructions were lost when I pasted the text listing into MAME. dogbuster.txt WAV file: http://www.cbm.sfks.se/tmp/dogbuster2.wav How to load in MAME once you have obtained the ROMs required for Laser 500 emulation: 1. Press Scroll Lock to enable UI and TAB to obtain menus. 2. Choose File Manager and cass, locate the WAV file. 3. Return to previous menu, choose Tape control. Stop and rewind the file. 4. Return to the emulator with a few ESC, type CLOAD + Return 5. Press TAB and go back to tape control followed by Play. 6. Once loading is done, press Scroll Lock to disable UI again. But as mentioned, the game doesn't run as I think it is supposed to. A good set of eyes proofreading the listing vs the text file above may be in order. Quote Link to comment Share on other sites More sharing options...
carlsson Posted June 25, 2017 Share Posted June 25, 2017 After some research, I found the issue of the magazine scanned at better resolution and contrast, which helped me fix the typos. Eventually I will paste this into the emulator and replace the WAV file posted above with the new version. dogbuster.txt http://www.retroedicola.it/_archivioRivisteInformatica/Laser_Computer_Club/1986%20(06).pdf I found two more issues of the Laser Computer Club magazine which contain a number of listings for both the Laser 310 and 500 models: http://www.retroedicola.it/_archivioRivisteInformatica/Laser_Computer_Club/1988%20(03).pdf http://www.retroedicola.it/_archivioRivisteInformatica/Laser_Computer_Club/1988%20(04).pdf With a bit of work, that would set up a very small software library even if entirely from an Italian user club. 1 Quote Link to comment Share on other sites More sharing options...
carlsson Posted June 25, 2017 Share Posted June 25, 2017 I typed in Flipper by Roberto B. It seems to utilize the cursor keys to move the flippers but the Laser 500 driver in MAME appears to not support cursor keys, so I modified the listing to use keys Z and M instead. A few interesting details here: PEEK(&H85F0) is an INKEY$ routine that might be better suited for continuous reading the keyboard. The values returned are rather based on some matrix, so they need to be looked up. DEF FN P$(X,Y)=CHR$(27)+CHR$(161)+CHR$(31+X)+CHR$(31+Y) is a way to get a PRINT AT routine, which obviously lacks in the built-in BASIC STRING$(n,CHR$(x)) creates a string that contains n occurrences of CHR$(x) flipper.txt WAV: http://www.cbm.sfks.se/tmp/flipper.wav I'll try it on my real Laser 500 later this week. Quote Link to comment Share on other sites More sharing options...
carlsson Posted June 26, 2017 Share Posted June 26, 2017 Based on the French page, and combined with the few listings I've found, here is the beginning of a POKE library: &H8030 = ASCII code of last key pressed &H85E5 = Number of scrolling rows (default 24, lower value means bottom rows are fixed) &H85E6 = Left column indent (default 0, in steps of 2, odd values will yield funny results) &H85F0 = Key code currently pressed (255 = no key) &H85FA = Turn on/off inverse text (bit 1) and beep (bit 3) &H8604 = Content at cursor position &H8995 = Start of BASIC program If you want a flashing cursor during INKEY$, you can issue the following commands: POKE &H8013,64:POKE &H8014,10:REM PREPARE FLASHING CURSOR POKE &H8012,&HC3:REM ENABLE FLASHING CURSOR POKE &H8012,&HC9:REM DISABLE FLASHING CURSOR The video memory is the last 16K. In 40 column text mode, the screen matrix starts at &HF800 and is arranged in a ZX Spectrum like order, where every even byte contains the character and every subsequent odd byte is a combination of background (low nybble) and foreground (high nybble). Row 0: Bytes 0 .. 79 Row 1: Bytes 256 .. 335 Row 2: Bytes 512 .. 591 Row 3: Bytes 768 .. 847 Row 4: Bytes 1024 .. 1103 Row 5: Bytes 1280 .. 1359 Row 6: Bytes 1536 .. 1595 Row 7: Bytes 1792 .. 1871 Row 8: Bytes 80 .. 159 Row 9: Bytes 336 .. 415 Row 10: Bytes 592 .. 671 Row 11: Bytes 848 .. 927 Row 12: Bytes 1104 .. 1183 Row 13: Bytes 1360 .. 1439 Row 14: Bytes 1596 .. 1675 Row 15: Bytes 1872 .. 1951 Row 16: Bytes 160 .. 239 Row 17: Bytes 416 .. 495 Row 18: Bytes 672 .. 751 Row 19: Bytes 928 .. 1007 Row 20: Bytes 1184 .. 1263 Row 21: Bytes 1440 .. 1519 Row 22: Bytes 1676 .. 1755 Row 23: Bytes 1952 .. 2031 As you can see, the last 16 bytes in each block of 256 bytes are wasted in this scheme, a total of 7 * 16 = 112 bytes. Both in the MAME emulator and on my real Laser 500, one needs to OUT &H43,7 before writing to the video memory. It produces some garbage at the bottom of the screen and locks up the computer at first, but if you issue a soft reset it kind of works. OUT &H43,5 to restore the memory map. Perhaps PRINT is a safer way to work with the screen matrix than POKE, at least until I understand exactly what it happening. This program kind of displays the entire font, if it has not been obvious before: 5 CLS:OUT &H43,7 10 FOR J=0 TO 7:FOR I=0 TO 31 15 POKE &HF800+J*256+I*2,J*32+I 20 NEXT I,J 25 OUT &H43,5 What I really would like to figure out is if it supports custom characters in some way. Nippur72 hinted about that earlier, but so far I haven't found any obvious signs that would be the case. Probably there is at least one POKE to steer the font from ROM to RAM in that case. Hmm... the question is if the manual even mentions such advanced operations. CatPix, you previously hinted that you might be sitting on a French edition of the manual? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.