Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apple 2 port stopped working #171

Closed
ivop opened this issue Sep 11, 2024 · 9 comments · Fixed by #176
Closed

Apple 2 port stopped working #171

ivop opened this issue Sep 11, 2024 · 9 comments · Fixed by #176

Comments

@ivop
Copy link
Contributor

ivop commented Sep 11, 2024

The Apple 2 port stopped working somewhere in the past. I don't know when it last worked, but at the moment it hangs after the CP/M-65 banner.

apple2-hang

@andreasbaumann
Copy link

andreasbaumann commented Sep 12, 2024

You might hit a max-size limit (I did in the past, meaning, when I touched it last time in March). IIRC the monitor_commandin ccp.S makes things just a little bit too big to be loaded.

         ; Monitor command?
-        cmp #'@'
-        beq monitor_command
+        ;~ cmp #'@'
+        ;~ beq monitor_command

and then commenting out the part after zproc monitor_command worked for me
as a temporary workaround.

@ivop
Copy link
Contributor Author

ivop commented Sep 12, 2024

I can confirm that the apple port indeed starts working again if the monitor command and associated procedures are commented out. And then I found out that the Apple ][ port has no screen driver, so it's not needed for my tests :)

@davidgiven
Copy link
Owner

The CCP, BDOS and BIOS all preferentially load into high RAM, and the Apple II only has 8kB of it. I guess that this change made it run out. It's supposed to fall back to using low RAM instead but I forget whether I actually implemented that bit yet.

In the meantime I'll add a tiny variant of the CCP, without the monitor, and make the Apple II use it. I'll leave the bug open for looking at the low RAM stuff.

Note: I don't currently have a working Apple emulator --- mame's Apple II support seems to be non-functional. So this has had no testing.

@andreasbaumann
Copy link

andreasbaumann commented Sep 13, 2024

@ivop: Actually, I was working on an Apple screen driver and 40/80-columns mode handling in a branch https://github.com/andreasbaumann/cpm65/tree/apple2_plus. Should take it up again and sync it with the main branch probably.

For testing on Linux I used a good port of the AppleWin emulator from https://github.com/audetto/AppleWin. But this is more suitable for manual testing and not really for automatic testing. There is a ncurses frontend and some libraries, so maybe it's possible to do some automatic executor?

@ivop
Copy link
Contributor Author

ivop commented Sep 13, 2024

Yes, a screen driver for the Apple port would be very nice!

As for emulation on Linux, I run linapple which seems to work quite well.

@andreasbaumann
Copy link

andreasbaumann commented Sep 17, 2024

I can update my branch to master and see if things are still running with
the 40/80-column modes for older Apple machines..

@davidgiven
Copy link
Owner

Very unlikely, I'm afraid --- sorry, I didn't register that you were working on this. Feel free to send me a PR anyway and I'll manually merge 40-column support.

One annoying thing is that the standard Apple character set only has partial support for inverse text so that without the IIe's extended character set, inverse text will look very weird (capitals only!).

@andreasbaumann
Copy link

andreasbaumann commented Sep 17, 2024

No worries, I didn't touch the branch since March, and I almost forgot, what I did in
there (40/80 column mode, some preliminary screen driver and a tetris of course to
test the screen driver). :-)

I'll merge and make more small pull request for the individual things.

I remember one especially tricky thing was to reuse code from the tty driver
also in the screen driver..

The inverse mode I opted to print only a space in inverse when blinking the
cursor (which is also not nice). And to do all capital seems to be the only option
in 40-columns mode too (IIRC I didn't implement it at all., sothe qe status bar
looks weird).

To complicate things further, a Videx 80-column card for instance can do proper
inverse mode for all characters..

@andreasbaumann
Copy link

andreasbaumann commented Sep 17, 2024

Created a pull request #177
See also #120

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants