News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

printer roms (dmp-2000 etc)

Started by arnoldemu, 17:12, 12 August 10

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

robcfg


@nocash:


According to the service manual the list of IC's is the following:


IC1          LM339                             Quad Differential Comparator
IC2          HD74LS00P                     Quadruple 2-Input Positive NAND Gate
IC3,11     M874LS06                       Hex inverter buffers
IC4          HD74LS74AP                   Dual D-type pos.-edge-triggered flip-flops with preset and clear
IC5          HD74LS14P                     Hex schmitt-trigger inverters
IC6          uPD7811G-071                8-Bit Single Chip NMOS Microcomputer with A/D Converter
IC7          HD74LS373P                   Octal D-type Transparent Latches with 3-state Outputs
IC8          HN4827128G-25 (50ns)  16K x 8 nMOS EPROM Memory
IC10        MB8128-15                      16384-BIT STATIC RANDOM ACCESS MEMORY WITH AUTOMATIC POWER DOWN
IC12-14   HD74LS374P                   Octal D-Type Edge Triggered Flip-Flops with 3-State Outputs
IC15,16   HD74LS139P                   Dual 2-line to 4-line decoders / demultiplexers
IC17        HA17555                         Precision Timer
TRA1        HA13408                         9-Channel Power Driver
TRA2,3     TH3L10                           Switching Transistors / Darlington Transistors / Diode Arrays / Transistor Arrays
IC18        L7805CY                         Positive voltage regulators


As you can see, there is only one readable chip that is the IC8, a 27128 Eprom. IC9 is empty as far as I remember. This weekend I'll try to take pictures of the PCB at CPCManiaco's place.

nocash

Aye, the dmp2000/3000 service manual parts list is a bit confusing. I think it's the "old" list for the dmp2000. The changed parts for dmp3000 are shown in the small box on upper-left of the next page: RAM raised from 2K to 8K bytes, and ROM raised too (for the additional "IBM" character set).
Hmmmm, if IC9 is empty, did you check if your EPROM was really only 16K in size? (The other listed combination would be IC8=32K.) Or, maybe they somehow found a way to squeeze the extra charset into a single 16K chip.

robcfg

#77
Hmmmm, now I'm not sure. I can try to dump it as if it were a 27256 and I'll send you the rom file so you can check it.


Edit: I've noticed that the second part list is for the DMP4000 (and not the DMP3000), and that contains an IC9 which is a 27256. Anyway, I'll try to redump the DMP3000 ROM later today.


Edit2: Ok, I've seen what you mean and you're most probably right. I'll redump the ROM and update the zip file in the DMP3000 page.

arnoldemu

No idea where I got this file from.
Found it on my harddrive in with a collection of roms.
I've no idea if it's the real rom or not.
I think I may have got it from a disc of roms from Rob Scott and Paul Fairman a long time ago.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

robcfg

I updated the ROM file of the DMP3000, just download it again from the printer's page.


Oh, btw, if you read carefully the service manual, Pica and Elite are the same font, they only differ in the dot size and the spacing of the dots.

nocash

Hi Kevin, the DMP2160.rom looks authentic: Comparing it with DMP2000 rom shows only 755 different bytes. More or less what one would expect (as far as I know the only difference between the two models are the timings).

Hi robcfg, great. Oh, no! It's telling me "PKUNZIP: (W24) Warning! You need PKUNZIP version: 8.8 or later to extract DMP3KSP.ROM" :-( I have version 2.50. Upgrading to v8.8 sounds like a scary big step. What should I do now?

> if you read carefully the service manual, Pica and Elite are the same font,
> they only differ in the dot size and the spacing of the dots.
Didn't read it that carefully, but makes sense. For DMP3000 there should be different fonts for Draft and NLQ (seen in appendix of the DMP3000 user manual) (the DMP2000 manual has no such appendix, so no idea if it has two fonts, too).

robcfg

I attached the uncompressed rom file. Just rename it to .rom


Would anybody be so kind of allowing .rom or .bin files to be uploaded as attachment?

nocash

Thanks!

> Would anybody be so kind of allowing .rom or .bin files to be uploaded as attachment?
Would be nice. Especially cool if you imagine this: "DMP3000.ROM, open with FLASH BIOS Update Tool?" :-) not that too many cpc users would be that stupid to click on Yes.

Devilmarkus

Quote from: robcfg on 22:39, 02 September 10
Would anybody be so kind of allowing .rom or .bin files to be uploaded as attachment?

Well, I don't know, why... (It should be easy to zip files nowadays)
But: Added: bin, rom, bas
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

arnoldemu

Quote from: nocash on 22:17, 02 September 10

Hi robcfg, great. Oh, no! It's telling me "PKUNZIP: (W24) Warning! You need PKUNZIP version: 8.8 or later to extract DMP3KSP.ROM" :-( I have version 2.50. Upgrading to v8.8 sounds like a scary big step. What should I do now?
go and see a therapist and when you have the confidence go for it.

:P
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

robcfg

QuoteWell, I don't know, why... (It should be easy to zip files nowadays)
But: Added: bin, rom, bas


Vielen Dank, Markus! The reason main reason is to be able to include attachments when everything else fails, like the pkunzip version...  :P


Quote
QuoteHi robcfg, great. Oh, no! It's telling me "PKUNZIP: (W24) Warning! You need PKUNZIP version: 8.8 or later to extract DMP3KSP.ROM" :-( I have version 2.50. Upgrading to v8.8 sounds like a scary big step. What should I do now?
go and see a therapist and when you have the confidence go for it. :P


And always remember: It's the red wire. Or was it the blue one?.... ???

nocash

Oh, colored wires won't scare me... only software updates. I've converted character sets from the three dumped EPROMs into bitmaps, http://cpcwiki.eu/index.php/Amstrad_Printers#Character_Set_ROMs
The red arrow indicates underlengths (characters that use the lower 8 pins). The blue line indicates the width for proportional characters.

For the fun of it, the dots are drawn as "real" dots (not square pixels). And like on real paper, they can overlap other dots if they are close to each other. Well, I've never seen real print-outs from that printers, but I guess they would look somewhat similar; possibly more smeared, or with other aspect ratios.

---

The DMP3000 does include extra italic characters, which don't seem to be present on DMP2000. So, either the DMP2000 doesn't support italics, or it creates them by software. Then, as expected, the DMP3000 has extra "IBM" characters - those are there in both NLQ and Draft format (which implies that the ASCII Draft chars do exist, too; apparently in the uPD7811 ROM).

The Schneider NLQ401 has ASCII chars in NLQ (defined with a super-high horizontal resolution). It Draft charset additionally includes most of the CPC symbols (chr 81h..FFh), which seem to be not supported by any other Amstrad/Schneider printers.

---

So far, I haven't seen the "japanese" character set that is mentioned in the DMP2000/3000 manuals... unless... maybe they were referring to the "Yen" symbol.

Haven't yet figured out if/how the NLQ401 supports UK/French charset (mentioned in service manual). Aside from the draft-mode "c," there are no french characters in the EPROM, but maybe the software is drawing accent marks on the normal vocals.

robcfg

#87
Nice work!


I really like how we finally got the printer fonts and I'm eager to see the printer emulation completed  8)


This was also a nice team effort, so congratulations everybody!


Btw, would it be too difficult to create a true type font from the printer fonts? Just for the nice retro touch, hehehehe  :D

nocash

> This was also a nice team effort, so congratulations everybody!
Yup, great how the manuals and ROMs showed up from here and there. Hope it will go on like that!

> Btw, would it be too difficult to create a true type font from the printer
> fonts? Just for the nice retro touch, hehehehe
You mean for emulating the Dot-Matrix effect on Ink-Jet printers? Would be funny.
I don't know anything about true-type font formats, but basically, one would need to know how define dots (ie. filled black circles), so alltogether it should be pretty simple.

Btw. I've split the http://cpcwiki.eu/index.php/Amstrad_Printers page into smaller fragments, and added links on related pages. Should now easier to find informations (the various user/service manuals contained just too much info for one page).

nocash

Just made a program for dumping the uPD7811 ROM in the DMP2000..DMP3000 printers. I hope it will be working.
The zipped binary is attached below. Robcfg, do you have an eprom burner?
The binary is 8Kbytes in size. When using a bigger EPROM, best fill the entire EPROM with copies of it.

And here is the source code,


org 2000h
defs 007Dh             ;2000 00 ..       defs    7Dh    ;NOPs
db 054h,0C0h,020h      ;207D 54 C0 20    JMP     $20C0  ;skip call table
.rept 20h               ;                .rept 20h
dw 20C0h               ;2080 C0 20 ..     dw 20C0h      ;call table (as in DMP2000/3000 EPROM)
.endm                   ;                .endm
defs 1E40h             ;20C0 00 ..       defs    1E40h  ;NOPs
db 069h,0E0h           ;3F00 69 E0       MVI     A,$E0  ;\port A, bit0..4=OUTPUT, bit5..7=INPUT
db 04Dh,0D2h           ;3F02 4D D2       MOV     MA,A   ;/
                                         @@restart:
db 034h,000h,000h      ;3F04 34 00 00    LXI     HL,$0000   ;start addr
db 06Ch,05Ah           ;3F07 6C 5A       MVI     D,$5A      ;clock byte
                                         @@byte_lop:
db 02Dh                ;3F09 2D          LDAX    (HL+)      ;get byte, and increase HL addr
db 01Bh                ;3F0A 1B          MOV     C,A        ;data byte
db 06Ah,007h           ;3F0B 6A 07       MVI     B,$07      ;num bits (minus 1)
                                         @@bit_lop:
db 064h,018h,002h      ;3F0D 64 18 02    ORI     PA,$02     ;PA.bit1=Busy=1
db 048h,007h           ;3F10 48 07       SLLC    C          ;shift left, out: cond=carry
db 064h,008h,0FDh      ;3F12 64 08 FD     ANI    PA,$FD     ;PA.bit1=Busy=0 (unless carry)
                                         @@wait_lop:
db 070h,069h,000h,0C0h ;3F15 70 69 00 C0 MOV     A,($C000)  ;read incoming 8bit Centronics Data
db 067h,000h           ;3F19 67 00       NEI     A,$00      ;compare reset code, out: cond=not equal
db @@restart-$-1       ;3F1B DC          JR      $2D69      ;restart, unless not equal
db 060h,0FCh           ;3F1C 60 FC       EQA     A,D        ;compare clock byte, out: cond=equal
db @@wait_lop-$-1      ;3F1E F9           JR     @@wait_lop ;wait more, unless equal
db 074h,014h,00Fh      ;3F1F 74 14 0F    XRI     D,$0F      ;toggle clock byte
db 052h                ;3F22 52          DCR     B          ;decrement, out: cond=borrow
db @@bit_lop-$-1       ;3F23 EC           JR     @@bit_lop  ;lop next bit, unless borrow
db @@byte_lop-$-1      ;3F24 E7          JR      @@byte_lop ;lop next byte (endless)
defs 4000h-$           ;3F25 00 ..       defs 4000h-$       ;padding
end


Most memory is padded with NOPs, the call table (contained in the original EPROM) is there, too. So whatever the ROM is doing to enter the EPROM, it should sooner or later hit the dumping code at address 3F00h.

Data is send via BUSY line, and clocked by toggling between values 5Ah and 55h on DATA lines. There's also a restart code supported (value 00h), so you can abort/restart the transfer without needing to reset the printer.

For receiving data, you need a PC or CPC with centronics port. Here's an example using Locomotive basic (will be endless slow and may take 1-2 hours or so):


100 OUT &EF00,&00:FRAME:FRAME:OUT &EF00,&33
110 C=&5A
120 FOR I=&4000 TO &5FFF
130  D=0
140  FOR J=0 TO 7
150   D=D+D+(INP(&F500) AND &40)
160   OUT(&EF00),C:C=C XOR &0F
170  NEXT J
180  D=D/&40:POKE I,D:PRINT HEX$(I),HEX$(D)
190 NEXT I
200 SAVE"DMP-ROM.BIN",B,&4000,&2000


Theoretically, the ROM should be 4K (0000h..0FFFh), and next 4K (1000h..1FFFh) should be empty/mirror of EPROM. Anyways, to be sure that the 2nd 4K are really empty, above program reads the whole 8K (0000h..1FFFh).

The values printed out are incrementing addresses (obviously), and data bytes. The first 80h bytes should contain opcodes (irq/reset vectors), next &40 bytes jump table, then followed by &600 bytes draft character set. The remaining bytes might be unused, or contain more characters, or even contain more code (though it looks as if most/all code is in the EPROM).

If the first 80h bytes are all 00h or all FFh then there's something wrong (and no need to wait until dumping finishes).

robcfg

#90
Hello everybody!


I just got a DMP3160 PCB and you have the rom and the scans available at the DMP3160 page.


I also did scans of the DMP2000 PCB, which are also uploaded to the DMP2000 page.


The DMP3160 looks different from the DMP2000 and DMP3000, it also has a uPD7810 microcontroller instead of a 7811. The rom is also different from the beginning to 0x1000.


Regarding the microcontroller ROM dump, I'll try to burn your rom and get it done, but I have to go to CPCManiaco's place to test it so maybe it'll take some more time. If I were to use a PC to get the data, which program should I use?


I'm enjoying much the work with the printers, but instead of digital archaeology it's looking more like Technomancy  :D


I feel very, very evil, hehehehe...

nocash

#91
Wow, cool. Photos, and a new eprom! Nice to see the PCBs and the Amstrad 40036 chip for real.

Interesting that the DMP3160 uses a ROM-less uPD7810. It makes sense since the 32K eprom maps to 0000h-7FFFh, so it would overlap the 4K ROM at 0000h-0FFFh.

Actually, it's overlapping in the same way on the DMP3000, but there, Amstrad did still "hide" the first 4K into the uPD7811 rom (and left the corresponding eprom area FFh-filled).

---

> Regarding the microcontroller ROM dump, I'll try to burn your rom and get it done
Would be great! Maybe the already have the data (in the first 4K of the new 3160 eprom), but maybe the older printers did have a different version.

Btw. do you know if the DMP2160 and DMP3000 do contain the same CPU/ROM as the DMP2000? Ie. do all contain "Amstrad 40036" chips, or are there further "Amstrad 40xxx" chips?

> If I were to use a PC to get the data, which program should I use?
I'm afraid there's no ready-for-use program - for some strange reason, nobody yet made a DMP-dumping tool. But you could port the Locomotive Basic example to whatever language you want.

On a PC the I/O addresses are different, and for everybody with Win NT/2K/XP it may be problematic to access I/O ports at all (without getting access right error messages). So easiest way might be to use a CPC, though in asm it be faster than basic.

Okay, all for now. I'm going to look what charsets can be found in the 3160 eprom...

PS.
Now that we have newer and newer ROMs, does somebody still think about dumping the good old DMP1 ROM? Please don't forget that one!

nocash

Here are the new characters. The first 4K of the DMP3160 are containing 128 Draft characters, plus 128 Draft-Italics, plus 65 special symbols; Quite possible that the DMP2000 didn't support the italics and/or the special symbols.

The remaining 28K are nearly identical to the DMP3000 rom, only 29 bytes changed in the "code" area. And, 1 byte changed in the NLQ font area - for some reason the "á" chr(13Fh) is broken in the DMP3160 eprom dump (in the DMP3000 it is intact).

robcfg

#93
QuoteNow that we have newer and newer ROMs, does somebody still think about dumping the good old DMP1 ROM? Please don't forget that one!


Be patient, it's already in the queue for dumping  ;)


Oh, by the way, for what I read, I don't have to use the dumping tool on the 3160, am I right? I ask just to be sure...

nocash

> Be patient, it's already in the queue for dumping  ;)
Okay, no hurry. Would be just a pity if it gets forgotten.

> for what I read, I don't have to use the dumping tool on the 3160, am I right?
Yup, no need to.
The uPD7810 has no ROM in it.
Only uPD7811 (=aka Amstrad 40036) contains ROM.

Btw. I am wondering if the above 65 "special" draft symbols are printable. They aren't documented in the DMP3160 user manual.

Devilmarkus

Request for nocash:
Could you generate Font-screens without spacings and marks?
I need the screens like the one I made.
Because I want to read the bitmaps.
Like this please:
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

Gryzor

Btw, guys, there are programs that can convert bitmaps to TTFs very easily... I can't remember the name right now, but googling is never too hard...

Devilmarkus

Yes nice. But I store the font in binary format.
TTF does not help me here.
When you put your ear on a hot stove, you can smell how stupid you are ...

Amstrad CPC games in your webbrowser

JavaCPC Desktop Full Release

robcfg

Well, it's been some time since we last talk about the printer dumps but I have some new for your delight.


I managed to burn the eprom with the file Nocash provided and got the dump of the microcontroller rom.


Bad news is that probably it's not useful at all, but I'll let you decide that.




Gryzor

Hang a printout on the wall, maybe? :)

Powered by SMFPacks Menu Editor Mod