|
Joined: Mar 2001
Posts: 17,239 Likes: 263
Very Senior Member
|
Very Senior Member
Joined: Mar 2001
Posts: 17,239 Likes: 263 |
That would be a non-hack solution. I like it.
|
|
|
|
Joined: Feb 2004
Posts: 2,608 Likes: 315
Very Senior Member
|
Very Senior Member
Joined: Feb 2004
Posts: 2,608 Likes: 315 |
Can you add a synchronisation barriers on the status signals? I’d rather not use arbitrary quantum values if it can be avoided.
|
|
|
|
Joined: Feb 2014
Posts: 1,135 Likes: 198
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,135 Likes: 198 |
Ok, I tried to put machine().scheduler().synchronize(); before the a2pic would start the strobe but it doesn't seem to be make any difference.
Calling synchronize is supposed to let the other devices run to catch up to this device so that the time is equal?
|
|
|
|
Joined: Mar 2001
Posts: 17,239 Likes: 263
Very Senior Member
|
Very Senior Member
Joined: Mar 2001
Posts: 17,239 Likes: 263 |
I'd put it right after the strobe and latch writes, since the goal is to get the ap2000 to react to it in time.
|
|
|
|
Joined: Feb 2014
Posts: 1,135 Likes: 198
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,135 Likes: 198 |
I put synchronize before the latches, after the latches, put both before and after, sprinkling them around and couldn't get it to work. Both ap2000 and the a2pic.
Then I stuck a synchronize in the top of a2bus_pic_device::read_cnxx(u8 offset) and then it started working. I'll take a few of the others away and see if it keeps working.
Is machine().scheduler().syncronize() the same as just plain synchronize()?
|
|
|
|
Joined: Mar 2001
Posts: 17,239 Likes: 263
Very Senior Member
|
Very Senior Member
Joined: Mar 2001
Posts: 17,239 Likes: 263 |
Try a machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(10)); on the strobe/latch write without the synchronize(). That's a fairly common pattern in MAME to let other CPUs catch up for a certain amount of time after something happens that should synchronize them.
|
|
|
|
Joined: Feb 2014
Posts: 1,135 Likes: 198
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,135 Likes: 198 |
Thanks for the suggestion about boost_interleave but I couldn't get it to work. So far the only things I've managed to get working for 030b_Combined_Enhanced_Graphics.dsk and Amperdump.dsk are either // config.set_maximum_quantum(attotime::from_usec(15)); or u8 a2bus_pic_device::read_cnxx(u8 offset) { synchronize(); Those two disks are pretty good test subjects for whether it'll work or not because they will immediately hit the timing issue when trying to print (basically hit the issue within about 10 characters or so.) However, I still can't get this simple basic program to work as it hits the timing issue. ![[Linked Image from i.imgur.com]](https://i.imgur.com/illGwAB.png)
1 REM TWO PAGE HI-RES DUMP BY BOB DIAZ OF EPSON
10 GOSUB 1000
20 FOR X=39 TO 0 STEP -1
30 PRINT SPC(10); CHR$(27);"K";CHR$(127);CHR$(1);
40 FOR I = 1 TO 383
50 IF PEEK(49601) > 127 THEN 50 : REM C1C1
60 POKE 49296, PEEK(A(I) + X) : REM C090
70 NEXT I
80 PRINT
90 NEXT X
99 PRINT ""
100 PRINT CHR$(27);"A";CHR$(12); : PR#0 : END
1000 REM SET UP ARRAY
1010 DIM A(384) : I = 0
1011 PR#1 : PRINT : PRINT CHR$(27);"A";CHR$(7);
1020 FOR P = 8192 TO 16384 STEP 8192
1030 FOR Y1 = 0 TO 80 STEP 40
1040 FOR Y2 = 0 TO 896 STEP 128
1050 FOR Y3 = 0 TO 7169 STEP 1024
1060 I = I + 1 : A(I)= Y1 + Y2 + Y3 + P
1061 REM PRINT I " "Y1" "Y2" "Y3" "P" "A(I)
1070 NEXT Y3,Y2,Y1,P
1080 RETURN
|
|
|
|
Joined: Feb 2004
Posts: 2,608 Likes: 315
Very Senior Member
|
Very Senior Member
Joined: Feb 2004
Posts: 2,608 Likes: 315 |
I’ll have another look over it at some point and see if there’s a simple way to deal with it.
|
|
|
|
Joined: Feb 2014
Posts: 1,135 Likes: 198
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,135 Likes: 198 |
Just for fun, I wanted to see if the Cauzin softstrip "stripper" program would run. ![[Linked Image from i.imgur.com]](https://i.imgur.com/mrKUkjr.png) After messing around with S2.DSK which has the stripper.e program, I nearly gave up since it errored out with "ERROR DURING READ, PROGRAM ABORTED". Why not try booting from a regular dos disk in flop1 -flop2 S2.DSK and RUN STRIPPER.E,D2 and voila! - it prints something that looks like a strip. ![[Linked Image from i.imgur.com]](https://i.imgur.com/cZNXAC4.png) ![[Linked Image from i.imgur.com]](https://i.imgur.com/ZKgrEBg.png) ![[Linked Image from i.imgur.com]](https://i.imgur.com/awcCAsX.png) STRIPPER.I is supposed to make strips from an Imagewriter. STRIPPER.E is the Epson version of the program. According to a page I read: "The electronics consist of an ATMS 7040 8-bit microprocessor and a custom VLSI chip that contains the reader logic, control and communications using four nested phase-locked-loops and several hardware and software servos." which I think means a TMS7040.
|
|
|
|
Joined: Feb 2014
Posts: 1,135 Likes: 198
Very Senior Member
|
Very Senior Member
Joined: Feb 2014
Posts: 1,135 Likes: 198 |
I was looking at some pictures of parallel cards and saw some nice hires pictures of the front and back of the LP Mightypress, and I thought, hmmm maybe I could figure out the schematic from tracing the wires. (Oh boy, was I wrong!) Flipping the back view to match the front view and labeling stuff and looking up datasheets is pretty time consuming. What's really hard is that you can't see through the chips on the board and know exactly where those traces are going. ![[Linked Image from i.imgur.com]](https://i.imgur.com/WCx0qYK.png) I was able to figure out quite a bit, but there were a lot of questions still and missing info. At one point I decided to look at the rom more closely and looked for strings that may be interesting. There's a string that said that it was PPI which must mean Practical Peripherals. There's a manual for the PPI GraphiCard with schematic and it looks just like the LP Mightypress. However the scanned schematic is missing about an inch in the middle of two pages but it does show 95% and answers how the banking is done. I love it when manuals include technical information like this. ![[Linked Image from i.imgur.com]](https://i.imgur.com/DzAeupV.png) ![[Linked Image from i.imgur.com]](https://i.imgur.com/YOBrVVR.png) I got it to mostly work, but for some reason the rotated graphic dumps don't come out properly. It seems to have some a6 fiddling for $c1c1 compatibility with the apple pic, and a 4k banked rom for $c800-c8ff. The bank gets switched to the upper part by reading c083,x and gets switched back to the lower part by if (((a9 && a10) && a8)) m_rombank=0;. One interesting feature is if you hit CTRL+I V it will give you a little test and tell you what printer you've got selected in the DIP switches. If it isn't working right, it will say BAD (in flashing) instead of GOOD. When I first saw it say GOOD I was quite happy! ![[Linked Image from i.imgur.com]](https://i.imgur.com/ppkfBrt.png)
|
|
|
0 members (),
80
guests, and
6
robots. |
Key:
Admin,
Global Mod,
Mod
|
|
Forums9
Topics9,331
Posts122,197
Members5,077
|
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!
|
|
|
|