Previous Thread
Next Thread
Print Thread
Page 61 of 80 1 2 59 60 61 62 63 79 80
Joined: Mar 2001
Posts: 17,239
Likes: 263
R
Very Senior Member
Very Senior Member
R Offline
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
G
Very Senior Member
Very Senior Member
G Offline
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
R
Very Senior Member
Very Senior Member
R Offline
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
G
Very Senior Member
Very Senior Member
G Offline
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
R
Very Senior Member
Very Senior Member
R Offline
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
G
Very Senior Member
Very Senior Member
G Offline
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]
Code
             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
G
Very Senior Member
Very Senior Member
G Offline
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]

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]
[Linked Image from i.imgur.com]
[Linked Image from i.imgur.com]

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
G
Very Senior Member
Very Senior Member
G Offline
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]


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]

[Linked Image from i.imgur.com]

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]

Page 61 of 80 1 2 59 60 61 62 63 79 80

Link Copied to Clipboard
Who's Online Now
0 members (), 80 guests, and 6 robots.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics9,331
Posts122,197
Members5,077
Most Online1,283
Dec 21st, 2022
Our Sponsor
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!

Superior Solitaire
Powered by UBB.threads™ PHP Forum Software 8.0.0