|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
Got different intensities working from 0 to 7: (not that anybody ever used this, but I suppose it's more authentic 8-)
|
|
|
|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
Having some silly fun, 2 printers at the same time, in slots 1 and 2. Zoom Grafix is awesome: 3x3 rotated: It gets a bit slow, but skip 10/10 unthrottle with F10 makes it fly at 800%.
|
|
|
|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
If you want to play with the silentype: https://github.com/goldnchild/mame/commit/621d051f50803aa23fd4c17d84508ba19a22609eYou don't need to boot into DOS 3.3, just launch mame's apple2p driver with -sl1 silentype,hit reset, type PR#1 and you are sending data to the printer. CTRL+Q will dump the hi-res screen. Intensity is stored in 0xCF10: POKE -12528,0 for intensity 0 POKE -12528,7 for intensity 7 or CALL -151 and then CF10:7 for example. CTRL+T toggles screen echo (if you enable screen echo, output is limited to 40 columns so if you LIST an applesoft program it won't be 80 columns wide) And you can have multiple silentypes which is kind of fun: -sl1 silentype -sl2 silentype. PR#2 will send data to the printer in slot #2. It will save each page to the snap directory under a silentype directory with a filename that includes the slot number like so: silentype_slot2_page1.png There's something really satisfying about watching the emulated printhead move back and forth. I always felt bad when my silentype printer broke years ago due to a flimsy plastic printhead and a wrinkle in the paper. I don't feel so bad now that I can run it in mame. 8-)
|
|
|
|
Joined: Jun 2014
Posts: 95 Likes: 3
Member
|
Member
Joined: Jun 2014
Posts: 95 Likes: 3 |
Let me know if you want any help with the ProDOS support. I have code to read and write ProDOS disks without relying on ProDOS itself.
|
|
|
|
Joined: Mar 2006
Posts: 1,079 Likes: 6
Very Senior Member
|
Very Senior Member
Joined: Mar 2006
Posts: 1,079 Likes: 6 |
That sounds like it could be useful in imagetool/floptool.
"When life gives you zombies... *CHA-CHIK!* ...you make zombie-ade!"
|
|
|
|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
Hi Peter, Sure, any help is appreciated. 8-) I got so interested in the silentype I haven't done much with the disk reading stuff for a while. I've been studying the books Beneath Apple Prodos and Universal File Conversion. The one thing that had me really stumped was the different sector orders between dos 3.3 and prodos. So dos 3.3 logical sector 1 maps to prodos logical sector 0xE for example. I came up with this function which seems to work (it's really useful to look at hexdumps).
-- prodos order to dos order
function mappotodo(a) local map={0,14,13,12,11,10,9,8,7,6,5,4,3,2,1,15} return map[a+1] end
-- function has an interesting property: calling it twice results in inverting the function
-- mappotodo(maptptodo(i)) == i
--
-- example: to hexdump a track in normal dos order
-- for i=0,15 do hexdumpts(0,i) end
-- example: to hexdump the same track in prodos order
-- for i=0,15 do hexdumpts(0,mappotodo(i)) end
|
|
|
|
Joined: Jun 2014
Posts: 95 Likes: 3
Member
|
Member
Joined: Jun 2014
Posts: 95 Likes: 3 |
Hi Golden Child, Yes, you have it mapped correctly, provided that the disk image is really in ProDOS ordering, of course. It's really physical order rather than DOS order, though. DOS ordering is 0, 13, 11, 9, 7, 5, 3, 1, 14, 12, 10, 8, 6, 4, 2, 15. The problem that we have is .dsk and .po aren't fixed in their format, so we might have DOS-ordered sectors in .po files, ProDOS-ordered sectors in .dsk files, physical ordering in both, etc. Emulators tend to have heuristics to detect what's what, but as you might have seen with the latest release of Anti-M for the Apple II, MAME failed to boot it because the file format was wrong and the heuristic was defeated.
|
|
|
|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
I think I'm very close to getting the Apple Graphics Tablet working... You PR#4 then print some configuration strings, then IN#4 and INPUT the X,Y and STATUS. If you use INPUT "";X$,Y$,Z$ you won't see a ? mark on the screen. after you input the string, IN#0 to reset the input to the keyboard. What input device can mame map to a tablet? I hooked up a joystick just for testing, just mapping the 0 to 255 values.
|
|
|
|
Joined: Mar 2001
Posts: 17,217 Likes: 234
Very Senior Member
|
Very Senior Member
Joined: Mar 2001
Posts: 17,217 Likes: 234 |
GC: Your Silentype implementation is pretty good, but you can get the slot number in an A2 card by calling slotno(). For instance, the zipdrive/focus drive has the common setup of separate CnXX images in the ROM for each slot:
uint8_t a2bus_zipdrivebase_device::read_cnxx(uint8_t offset)
{
int const slotimg = slotno() * 0x100;
// ROM contains CnXX images for each of slots 1-7 at 0x0 and 0x1000
return m_rom[offset+slotimg+0x1000];
}
|
|
|
|
Joined: Feb 2014
Posts: 1,102 Likes: 173
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,102 Likes: 173 |
GC: Your Silentype implementation is pretty good, but you can get the slot number in an A2 card by calling slotno(). For instance, the zipdrive/focus drive has the common setup of separate CnXX images in the ROM for each slot:
uint8_t a2bus_zipdrivebase_device::read_cnxx(uint8_t offset)
{
int const slotimg = slotno() * 0x100;
// ROM contains CnXX images for each of slots 1-7 at 0x0 and 0x1000
return m_rom[offset+slotimg+0x1000];
}
Hi RB: Thanks! I knew there had to be an easier way to find out the slot number. I was getting ready to ask you for any suggestions/comments. I've got to clean up a couple of bugs too:
// clear paper to bottom from the current head position
// this doesn't make sense
// clear to the bottom
//m_bitmap.plot_box(m_ypos*7/4,3,PAPER_WIDTH-1,PAPER_HEIGHT-1,rgb_t::white());
// I think it should be:
m_bitmap.plot_box(0,m_ypos*7/4+7,PAPER_WIDTH,PAPER_HEIGHT,rgb_t::white());
Hacking on mame is so darn addictive...
|
|
|
1 members (MrBogi),
311
guests, and
4
robots. |
Key:
Admin,
Global Mod,
Mod
|
|
Forums9
Topics9,320
Posts121,944
Members5,074
|
Most Online1,283 Dec 21st, 2022
|
|
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!
|
|
|
|