Open larsbrinkhoff opened 3 years ago
GIGI: vk100.zip
23-017E4-00, E52
23-018E4-00, E51
23-031E4-00, E53
23-190E2-00, E50
VT101: vt101.zip
23-028E4-00, E71
VT102: vt102.zip
23-041E4-00, E69
23-042E4-00, E71
23-225E4-00, E69
23-226E4-00, E71
VT180: vt180.zip
23-017E3-00
23-018E2-00, E4
23-021E3-00
23-032E2-00, E52
23-033E2-00, E45
23-034E2-00, E40
23-061E2-00, E56
CIT-101: cit101.zip
Grepping the VT220 files I see both V2.1 and V2.3.
A VT102 screenshot shows V1.1, but I don't see that in the vt102.zip files. There are two "V1" though, so maybe the minor number is output separately.
Do not forget about VT105, VT125 and VT340. There are copies of VT105, VT132 and VT340 firmware images on the Internet but we can't find VT125 expansion firmware images for VT105 base terminal that contains ReGIS processor routines.
Thanks @fsword7. Yes, those are possible simulation targets as well. But I'm not sure how much time I will have to explore much further beoynd the basic VT100. We'll see.
Bitsavers has some VTxxx ROMs, and there are others packages for MAME. I know @jeffpar has collected a long list of ROM images for various DEC machines, but I can't seem to find it now.
I can't find ROM images for terminal on Bitsavers. I got all ROM images from Dunnington FTP site that includes some terminals, PDP-11, VAX and some devices (RQDX1/2/3 and TKZ50). @jeffpar do you still have images available?
Not sure, but I will look and report back.
Oh, I now got it. I was looking for other terminals on Bitsavers. Thanks.
Thanks @fsword7. Yes, those are possible simulation targets as well. But I'm not sure how much time I will have to explore much further beoynd the basic VT100. We'll see.
Bitsavers has some VTxxx ROMs, and there are others packages for MAME. I know @jeffpar has collected a long list of ROM images for various DEC machines, but I can't seem to find it now.
Is this maybe the page you were thinking of?
Yeah! Thanks. I already found it before. I did not know who collected a listing of ROM images until now.
Yes, that's the one. Thanks!
Hi, and thanks for maintaining this.
I'm interested in terminal emulation in general, and real hardware is hard to come by (and takes up space...) so it's not easy to test how a real VTXXX behaves (though docs do exist).
Other than this project, there's only one other hardware emulator which I know of - http://blog.schmorp.de/2015-11-10-emulating-vt102-hardware-in-perl-1.html which can help evaluate the behavior on a real VT100, so personally I find it much more than a niche "real retro vt100 for the RPI" project (and appreciate the -Q
option), with some real world use cases other than being cute (though cute is valuable too!).
So I was hoping to try some of the other rom dumps posted above (personally I'm interested in VT102 and VT220, but the more the merrier), but couldn't quite figure out how to create a new rom.c
from their content.
Which of those roms are supposed to (theoretically) work out of the box? I'd presume at least vt102? What about VT220, and possibly others?
How shuld one create a new rom.c
from their content?
Maybe this project could incorporate the working roms into the source files so that one could choose (at compile or run time) which system to emulate?
Thanks again.
Hello @avih,
Thanks for your comments. There is also a working VT100 in MAME, and there's another one in JavaScript. I didn't know the one in Perl, so thanks for that.
There's no automated way to make a rom.c from a ROM image. It's basically just a hexdump.
For now I would only expect VT100 and VT101 ROMs to work. VT102 would probably expect AVO (advanced video option, more attributes like bold, bright, blink, etc) which I haven't implemented yet. VT220 and up are significantly different hardware.
Support for more models would absolutely be in scope for this project, but at this point I don't have much time.
There is also a working VT100 in MAME, and there's another one in JavaScript
Nice. I somehow had the impression that the MAME one is incomplete or impractical, and was not aware of the JS one. Link please?
EDIT: for future reference, I was able to use the vt102 emulation in MAME after following this https://zork.net/~st/jottings/Real-VT102-emulation-with-MAME.html . Got it working as far as what's described there, which does have caveats. FWIW, nowhere near as simple and immediate as using this project.
There's no automated way to make a rom.c from a ROM image. It's basically just a hexdump.
Yeah, it looks as such. So for the vt101 one should just replace the first array at rom.c
with a dump of the bin file inside https://github.com/larsbrinkhoff/terminal-simulator/files/6492806/vt101.zip ? (or just use -R romfile.bin
with that zip content?)
VT102 would probably expect AVO (advanced video option, more attributes like bold, bright, blink, etc) which I haven't implemented yet.
This would be very nice ;)
at this point I don't have much time.
Right, such is life...
Thanks again though.
Here's the JavaScript VT100 emulator: https://www.pcjs.org/machines/dec/vt100/
So for the vt101 one should just replace the first array at rom.c with a dump of the bin file
Yes. Don't use -R, that's for loading a CP/M executable.
Here's the JavaScript VT100 emulator: https://www.pcjs.org/machines/dec/vt100/
Thanks. For me, like MAME, it was not easy to use as a test platform.
For reference, There's also this which I think is vt100+avo: https://github.com/phooky/VT100-Hax . I was able to get the ncurses version running (one might want to replace -lncurses
with -lncursesw
at the Makefile and run it with ./vt100sim -r ../../ROMs/basic.bin
, and use F10 and then ^D to exit).
So we have 5 working hardware emulators: MAME, JS (vt100), VT100-Hax (vt100+avo), the perl one (vt100[+avo]/vt102/vt131), and this project (vt100).
This project is very easy to run and has feature for faithful reproduction of the real behavior/timing and visual output, while the perl one is mostly intended for behavior testing, and it has some features to help with that (status LEDSs, faster than real vt100, XON/XOFF handled internally to avoid drops), but needs to run in a terminal...
Good to have a choice :)
Oh right, VT100-Hax was a major source of information for me. Sorry I forgot to mention it.
VT240 board, photo by @techfury90.
I don't think you've picked up on these yet, for the VT125: https://github.com/technomancer-lv/vt125-rom/tree/main/rom
From a quick concatenation, in the order they're listed, the disassembly makes sense. The ReGIS state machine is all visible as 14 jump tables between ~2600h and 3a00h and there's a load of glyph data from ~4200h.
I would've loved to have extended my ANSI parser specification to cover ReGIS years ago, but I didn't have any graphics terminal to experiment with!
Thank you @hisdeedsaredust. That's right, I hadn't located the VT125 ROM yet.
A VT102 screenshot shows V1.1, but I don't see that in the vt102.zip files. There are two "V1" though, so maybe the minor number is output separately.
The VT102 files are V1.2. The version number is present in ASCII form in both ROMS as V12 and a following 0ch byte for the binary form.
MAME ROM sites can also supply the VT131 extra ROM, which is tiny because nearly all of the functionality of the VT131 is an integral part of the base VT102 ROMS. The VT131 ROM only exists to (1) be a way to trigger the change to VT131 mode, and (2) to provide SET-UP C screen.
Thanks again @hisdeedsaredust! I better gather up all those ROM images and put them in one place.
Oh thought I should post, I have some VT52 roms off a board I bought years ago. Had to build something custom to get them though. The chips are named 119a9,120a9, 121a9, 122a9.
I was going to make a hex format but as I was dumping the roms I kind of forgot what sockets they were in and there really isn't a 4bit format for HEX that I am aware off. First like is just a hex text dump from the start of the chip and then a break out per line.
Hope this helps. I ment to do something like this 5 years ago but life got in a way, glad somone is working on it. vt52_rom_dump.txt
@9track revealed his set of ROM dumps, including VAXstation 100:
http://www.9track.net/roms/
VT50 microcode listing found here:
http://www.bitsavers.org/www.computer.museum.uq.edu.au/pdf/VT50%20Service%20Notes.pdf
Hi, found this project while searching for info on my physical VT101 (which is now technically a VT102 after a board swap). Anyway, I also have the AVO board for a VT100 and see that its ROM is missing from your collection. Is this something you still need? I have no problem dumping it for you.
@mitchdotnet, yes please!
Admittedly, I haven't been working actively on this for a while, but there are still some things I'd like to do in the future.
Cool, I'll try to get to it this weekend. Where/how would you like me to send it once I've got it dumped?
EDIT: nvm, I'll just put it on my site and send a link
I may have jumped the gun a bit here. I'll have to take a look at my actual AVO board when I get home later but every other example I'm seeing just has 4 empty sockets where I'd expect to find the ROM(s), and if I'm reading the tech manual correctly these are unused by default and extra ROMs on the AVO are only needed when used in specific configurations that used the Word Processing Keyboard or non-US/UK languages or a combination of both.
Right, that's what I was thinking. I am not aware of any AVO ROM in the standard configuration. Well, thanks for offering!
VT1xx ROMs. Four 2Kx8 make up the main firmware mapped at 0000-1FFF. The character set is another 2K8x, but is not available to the CPU. The "Advanced Video Option" (AVO) can supply extra RAM and ROM; the latter is in the 8000-BFFF range (16K).
This comment will be continuously edited as more information appears.