Code Monkey home page Code Monkey logo

Comments (22)

suborb avatar suborb commented on September 26, 2024 1

It's not complete - keyboard reading seems a bit off for getk() I think, but I've added -clib=t200

from z88dk.

suborb avatar suborb commented on September 26, 2024

I've not done any work on the m100, but it looks like the called ROM addresses for the m10 should be:

defc    KYREAD  = $12D4 ; wait for key from the keyboard
defc    KYPEND  = $13E4 ; check keyboard queue for pending characters

defc    CLS     = $420D ; clear screen
defc    CHROUT  = $4B12 ; print character in reg. A to LCD/printer
defc    CURPOS  = $4258 ; position cursor; H=column (1-40), L=row(1-8)
defc    CURSON  = $4225 ; turn cursor on
defc    CURSOFF = $422A ; ...and off
defc    BEEP    = $4205 ; sound the beeper

defc    LCDSET  = $7166 ; LCD set pixel (D, E)
defc    LCDRES  = $7167 ; LCD reset pixel (D, E)

If the RAM addresses haven't changed (need to investigate), and you don't mind doing so, replace the values in lib/target/m100/def/romcalls.def with these and see if it works.

If it does, I can add a -subtype option with not too many changes.

from z88dk.

suborb avatar suborb commented on September 26, 2024

For reference, the KC85 addresses should be these:

defc    KYREAD  = $12D4 ; wait for key from the keyboard
defc    KYPEND  = $13E4 ; check keyboard queue for pending characters

defc    CLS     = $420D ; clear screen
defc    CHROUT  = $4AFA ; print character in reg. A to LCD/printer
defc    CURPOS  = $4258 ; position cursor; H=column (1-40), L=row(1-8)
defc    CURSON  = $4225 ; turn cursor on
defc    CURSOFF = $422A ; ...and off
defc    BEEP    = $4205 ; sound the beeper

defc    LCDSET  = $70FA ; LCD set pixel (D, E)
defc    LCDRES  = $70FB ; LCD reset pixel (D, E)

from z88dk.

suborb avatar suborb commented on September 26, 2024

Actually, there's a few more changes needed. I've got hello world working now which is a good start!

from z88dk.

suborb avatar suborb commented on September 26, 2024

I've added -clib=m10 and -clib=kc85 to the +m100 target - let me know how you get on.

from z88dk.

Fabrizio-Caruso avatar Fabrizio-Caruso commented on September 26, 2024

Thanks! I tried one of my games and it seems OK!
Great job! Two more targets!
The Olivetti M10 is a popular machine in Italy.

from z88dk.

suborb avatar suborb commented on September 26, 2024

Similarly I've added -clib=pc8201 for the entry points for that machine. Entry points are taken from http://web8201.net A couple of notes:

  1. Option ROMs aren't supported (I can't find the right trampoline function)
  2. It's completely untested (I can't get any emulator to work correctly with the ROM I've got).

from z88dk.

Fabrizio-Caruso avatar Fabrizio-Caruso commented on September 26, 2024

kc85 and m10 work with my games ! Thanks a lot!

pc8201 is broken or at least it is not starting under VirtualT emulator (which should come with roms):
https://github.com/McNeight/VirtualT

Maybe the loading procedure is different. F8 does not bring you back to the main menu.
RUNM " fails with an error.

from z88dk.

Fabrizio-Caruso avatar Fabrizio-Caruso commented on September 26, 2024

@suborb ROMS (including the ones for the PC8201) are here:
https://github.com/McNeight/VirtualT/tree/master/ROMs

from z88dk.

suborb avatar suborb commented on September 26, 2024

2 out of 3 isn't too bad!

The PC-8201 is the most different with multiple RAM banks etc so I'm not too shocked that it didn't work.

I'll take a look.

from z88dk.

Fabrizio-Caruso avatar Fabrizio-Caruso commented on September 26, 2024

@suborb 2 out of 3 in no time is great.
The Olivetti M10 is a fairly popular computer in Italy. So you probably made some people happy.

from z88dk.

suborb avatar suborb commented on September 26, 2024

So....if you select "reset" on the emulator, and then select the file it seems to work - admittedly just for a hello world.

The basic is definitely different - the token list is here: https://www.web8201.net/default.asp?content=NEC-Tokens.asp and there's no RUNM command listed.

Typing "menu" returns to the menu from BASIC

from z88dk.

Fabrizio-Caruso avatar Fabrizio-Caruso commented on September 26, 2024

I had figured the reset trick but it did not work with my game Bomber (xl bomber pc8201) nor with a simpler helloworld (xl helloworld pc8201).
Have changed something?

from z88dk.

Fabrizio-Caruso avatar Fabrizio-Caruso commented on September 26, 2024

Ok, I managed to make it working. It looks like there is a bug in the emulator.
image
If I select INFO, it loads BOMBER. If I select BOMBER or HELLOWORLD nothing is loaded.
It seems a problem with the emulator or the Menu manager.

from z88dk.

suborb avatar suborb commented on September 26, 2024

I think the recipe is:

  1. Load the file using the emulator
  2. Enter basic
  3. clear 0,49999
  4. menu
  5. Select the file from the menu

image

from z88dk.

Fabrizio-Caruso avatar Fabrizio-Caruso commented on September 26, 2024

Thanks ! It does run if I do everything in the right order.

So all systems emulated by this VirtualT except the T200 are supported, which has a larger screen but looks otherwise similar.

from z88dk.

suborb avatar suborb commented on September 26, 2024

Good to hear that it works for you. I've updated the wiki with the loading method.

The 200 will need a ROM disassembly to find the entry points. I'm hoping someone out there has done all the hard work and it'll just be a case of cross-referencing.

from z88dk.

Fabrizio-Caruso avatar Fabrizio-Caruso commented on September 26, 2024

basck could not find anything useful ?

from z88dk.

Fabrizio-Caruso avatar Fabrizio-Caruso commented on September 26, 2024

@suborb
Maybe not everything you need but it is a starting point.

BASTXT  = $F73F

I suppose that the Assembly code at PRINT $4DF5 may lead to CHOUT.

CHRGTB  = $0883   ; (a.k.a. GETCHR, GETNEXT) may also help.

Also this may be interesting:

@ $0020 label=OUTDO
c $0020 Output char in 'A' to console

Other maybe interesting stuff here but I am not sure what inport means:

@ $ef56 label=INPORT
D $ef56 Current port for 'INP' function
@ $ef53 label=OTPORT
D $ef53 Current port for 'OUT' statement

basck_map.txt
basck_ctl.txt

from z88dk.

Fabrizio-Caruso avatar Fabrizio-Caruso commented on September 26, 2024

Looking forward to trying it out.

In the page about the target I see "Hires graphics" is supported but no UDGs. What does this mean?
Which APIs can I use? Sprites with the monochromatic sprite library?
Given the small screen for all these targets except T200, hires graphics could be use have very short characters like 6 pixels.

from z88dk.

Fabrizio-Caruso avatar Fabrizio-Caruso commented on September 26, 2024

Thanks a lot for your great work!
Indeed the keyboard is not working as expected.

I see the cursor but the expected keys are not working, e.g., SPACE is not responding.
But F4 is producing the same result as SPACE.
On the other hand when the game display the ~ character, the game stops and waits for input.
F4 can be used to restart the game.

By the way, of all my games only the mini game Bomber (about 5k) can be loaded.
The second smallest game Horde (10k) and all the others produce OM error (out of memory I guess).
This is most probably an issue in Z88DK but a hardware limitation.

image

from z88dk.

suborb avatar suborb commented on September 26, 2024

Rather than relying on a possibly dubious list, I've found the correct entry point for keyboard polling - with that XBomber is playable - it's a small change (f7b510a) so you can easily try it out without needing to get a new build.

In theory, building an option rom is the way around the size limit, but that's only working on the M100 and KC85. I'd quite like to build an option ROM correctly so that the title appears in the menu when it's inserted, but I'm finding the information is contradictory: eg put the title at $40, but at $40 you have to have a continuation of a routine in the main ROM.

Personally, I wouldn't bother with the hires graphics if you need a point() - it's just using plot/unplot from MS BASIC. In theory the T200 does support changing the font (it's stored rotated with 6 bytes per character) though I've not found where you place it.

from z88dk.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.