CINT adjustments for 'Operacja Proboszcz' game
This commit is contained in:
1 parent
2009702011
commit
0f80941eac
7 files changed
+53
-36
No files matched your search
@@ -137,7 +137,7 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on
|
||||
| `$FFDB` | | `SETTIM` | DONE | |
|
||||
| `$FFDE` | | `RDTIM` | DONE | |
|
||||
| `$FFE1` | `$F6ED` | `STOP` | DONE | |
|
||||
| `$FFE4` | `$F13E` | `GETIN` | PARTIAL | only keyaboard supported |
|
||||
| `$FFE4` | `$F13E` | `GETIN` | PARTIAL | only keyboard supported |
|
||||
| `$FFE7` | `$F32F` | `CLALL` | DONE | |
|
||||
| `$FFEA` | | `UDTIM` | DONE | |
|
||||
| `$FFED` | | `SCREEN` | DONE | |
|
||||
@@ -155,26 +155,27 @@ Not all of them - only these we want to have implemented.
|
||||
|
||||
<br />
|
||||
|
||||
| Address | Name | Status | Remarks |
|
||||
| :-------: | :------------------ | :------: | :------------------------------------------------: |
|
||||
| `$E544` | clear screen | DONE | |
|
||||
| `$E50C` | set cursor position | PARTIAL | |
|
||||
| `$E566` | home cursor | NOT DONE | |
|
||||
| `$E5A0` | setup VIC II & IO | DONE | |
|
||||
| `$E6B6` | advance cursor | NOT DONE | |
|
||||
| `$E701` | previous line | NOT DONE | |
|
||||
| `$E8EA` | scroll line | NOT DONE | |
|
||||
| `$E9FF` | clear line | NOT DONE | |
|
||||
| `$EA31` | default IRQ | PARTIAL | |
|
||||
| `$EA7E` | ack CIA1 + below | DONE | |
|
||||
| `$EA81` | ret from IRQ/NMI | DONE | |
|
||||
| `$F142` | get key from buffer | DONE | |
|
||||
| `$FD30` | default vectors | DONE | |
|
||||
| `$FD90` | (unknown) | NOT DONE | |
|
||||
| `$FD90` | (unknown) | NOT DONE | |
|
||||
| `$FE2D` | memtop set part | DONE | |
|
||||
| `$FE47` | default NMI | PARTIAL | |
|
||||
| `$FE66` | default BRK | DONE | |
|
||||
| `$FF80` | revision byte | DONE | |
|
||||
| Address | Name | Status | Remarks |
|
||||
| :-------: | :--------------------------- | :------: | :------------------------------------------------: |
|
||||
| `$E51B` | init screen keyboard, no VIC | PARTIAL | not sure if correct |
|
||||
| `$E544` | clear screen | DONE | |
|
||||
| `$E50C` | set cursor position | PARTIAL | |
|
||||
| `$E566` | home cursor | NOT DONE | |
|
||||
| `$E5A0` | setup VIC II & IO | DONE | |
|
||||
| `$E6B6` | advance cursor | NOT DONE | |
|
||||
| `$E701` | previous line | NOT DONE | |
|
||||
| `$E8EA` | scroll line | NOT DONE | |
|
||||
| `$E9FF` | clear line | NOT DONE | |
|
||||
| `$EA31` | default IRQ | PARTIAL | |
|
||||
| `$EA7E` | ack CIA1 + below | DONE | |
|
||||
| `$EA81` | ret from IRQ/NMI | DONE | |
|
||||
| `$F142` | get key from buffer | DONE | |
|
||||
| `$FD30` | default vectors | DONE | |
|
||||
| `$FD90` | (unknown) | NOT DONE | |
|
||||
| `$FD90` | (unknown) | NOT DONE | |
|
||||
| `$FE2D` | memtop set part | DONE | |
|
||||
| `$FE47` | default NMI | PARTIAL | |
|
||||
| `$FE66` | default BRK | DONE | |
|
||||
| `$FF80` | revision byte | DONE | |
|
||||
|
||||
<br />
|
||||
@@ -1,15 +1,15 @@
|
||||
|
||||
//
|
||||
// Official Kernal routine, described in:
|
||||
// It seems this is a part CINT which initializes screen and keyboard, but does not
|
||||
// reset VIC-II. See here: https://csdb.dk/forums/index.php?roomid=11&topicid=17048&firstpost=22
|
||||
//
|
||||
// For more details see:
|
||||
// - [RG64] C64 Programmer's Reference Guide - page 280
|
||||
// - [CM64] Compute's Mapping the Commodore 64 - page 242
|
||||
//
|
||||
// CPU registers that has to be preserved (see [RG64]): none
|
||||
//
|
||||
|
||||
cint_screen_keyboard_real:
|
||||
|
||||
cint_real:
|
||||
// XXX check what really is performed here
|
||||
|
||||
// According to [CM64], this routine checks for PAL/NTSC. It's definitely not done
|
||||
// within the 'BRK' part, this can be easily checked - POKE something
|
||||
@@ -116,9 +116,6 @@ cint_brk: // entry for BRK and STOP+RESTORE - XXX, where should it start?
|
||||
ldx #$00
|
||||
stx MODE
|
||||
|
||||
// Setup video and I/O
|
||||
jsr setup_vicii
|
||||
|
||||
// Fallthrough/jump to screen clear routine (Compute's Mapping the 64 p215)
|
||||
|
||||
jmp clear_screen
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
// Routine too long to fit here
|
||||
|
||||
cint_screen_keyboard:
|
||||
|
||||
jmp cint_screen_keyboard_real
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
Game 'Operacja Proboszcz' explicitly calls this location.
|
||||
@@ -1,6 +0,0 @@
|
||||
|
||||
// Our implementation is longer than the original one,
|
||||
// placing it here would cause a collision with OPEN
|
||||
|
||||
CINT:
|
||||
jmp cint_real
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
//
|
||||
// Official Kernal routine, described in:
|
||||
//
|
||||
// - [RG64] C64 Programmer's Reference Guide - page 280
|
||||
// - [CM64] Compute's Mapping the Commodore 64 - page 242
|
||||
//
|
||||
// CPU registers that has to be preserved (see [RG64]): none
|
||||
//
|
||||
|
||||
CINT:
|
||||
|
||||
// Setup video and I/O
|
||||
jsr setup_vicii
|
||||
|
||||
jmp cint_screen_keyboard
|
||||
@@ -12,6 +12,7 @@ default_brk_handler:
|
||||
|
||||
jsr JRESTOR
|
||||
jsr JIOINIT
|
||||
jsr setup_vicii // XXX should probably be a part of cint_brk
|
||||
jsr cint_brk
|
||||
|
||||
cli
|
||||
|
||||
Reference in new issue
Block a user