larsbrinkhoff / terminal-simulator

Simulation of VT52 and VT100 terminal hardware.
GNU General Public License v3.0
113 stars 17 forks source link

Firmware images #1

Open larsbrinkhoff opened 3 years ago

larsbrinkhoff commented 3 years ago

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.

larsbrinkhoff commented 3 years ago

GIGI: vk100.zip

23-017E4-00, E52
23-018E4-00, E51
23-031E4-00, E53
23-190E2-00, E50

larsbrinkhoff commented 3 years ago

VT101: vt101.zip

23-028E4-00, E71

larsbrinkhoff commented 3 years ago

VT102: vt102.zip

23-041E4-00, E69
23-042E4-00, E71
23-225E4-00, E69
23-226E4-00, E71

larsbrinkhoff commented 3 years ago

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

larsbrinkhoff commented 3 years ago

CIT-101: cit101.zip

larsbrinkhoff commented 3 years ago

VT220:
vt220.zip

23-011M1, E1
23-178E6
23-182E5, E4
23-183E5, E3
23-348E4, E13

And the LK201 keyboard: lk201.zip

23-00S9
23-0042M2, E1

larsbrinkhoff commented 3 years ago

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.

fsword7 commented 3 years ago

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.

larsbrinkhoff commented 3 years ago

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.

fsword7 commented 3 years ago

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?

jeffpar commented 3 years ago

Not sure, but I will look and report back.

larsbrinkhoff commented 3 years ago

ROM images on Bitsavers:

fsword7 commented 3 years ago

Oh, I now got it. I was looking for other terminals on Bitsavers. Thanks.

jeffpar commented 3 years ago

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?

fsword7 commented 3 years ago

Yeah! Thanks. I already found it before. I did not know who collected a listing of ROM images until now.

larsbrinkhoff commented 3 years ago

Yes, that's the one. Thanks!

avih commented 3 years ago

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.

larsbrinkhoff commented 3 years ago

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.

avih commented 3 years ago

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.

larsbrinkhoff commented 3 years ago

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.

avih commented 3 years ago

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 :)

larsbrinkhoff commented 3 years ago

Oh right, VT100-Hax was a major source of information for me. Sorry I forgot to mention it.

larsbrinkhoff commented 2 years ago

VT240 board, photo by @techfury90. vt240

hisdeedsaredust commented 2 years ago

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!

larsbrinkhoff commented 2 years ago

Thank you @hisdeedsaredust. That's right, I hadn't located the VT125 ROM yet.

hisdeedsaredust commented 2 years ago

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.

larsbrinkhoff commented 2 years ago

Thanks again @hisdeedsaredust! I better gather up all those ROM images and put them in one place.

WarlockD commented 2 years ago

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

larsbrinkhoff commented 2 years ago

@9track revealed his set of ROM dumps, including VAXstation 100:
http://www.9track.net/roms/

vs100.zip

larsbrinkhoff commented 1 year ago

VT50 microcode listing found here:
http://www.bitsavers.org/www.computer.museum.uq.edu.au/pdf/VT50%20Service%20Notes.pdf

mitchdotnet commented 6 months ago

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.

larsbrinkhoff commented 6 months ago

@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.

mitchdotnet commented 6 months ago

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

mitchdotnet commented 6 months ago

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.

2024-02-21_9-27-31

larsbrinkhoff commented 6 months ago

Right, that's what I was thinking. I am not aware of any AVO ROM in the standard configuration. Well, thanks for offering!