CINT adjustments for 'Operacja Proboszcz' game

This commit is contained in:
FeralChild64 committed 2019-10-20 12:32:14 +02:00
1 parent 2009702011
commit 0f80941eac
7 files changed
+53 -36

No files matched your search

+23 -22
View File
@@ -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
+2
View File
@@ -0,0 +1,2 @@
Game 'Operacja Proboszcz' explicitly calls this location.
-6
View File
@@ -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
+16
View File
@@ -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