Skip to content

Commit

Permalink
Update GEMINIFM.SRC
Browse files Browse the repository at this point in the history
Unborked slot management code. GEMINIFM.COM now passes MSX Acid Test 1 B)
  • Loading branch information
TheNetNomad committed Dec 6, 2021
1 parent 4a73ea7 commit 7855dc9
Showing 1 changed file with 22 additions and 18 deletions.
40 changes: 22 additions & 18 deletions GEMINIFM.SRC
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@ BEGIN
SET DETECT_APRLOPLL_ADDR = ^h4018;
SET DETECT_MCHFM0_ADDR = ^h0080;

EXTERNAL BYTE RAMAD0 ADDRESS ^hF341;
EXTERNAL BYTE RAMAD1 ADDRESS ^hF342;
EXTERNAL BYTE RAMAD2 ADDRESS ^hF343;
EXTERNAL BYTE RAMAD3 ADDRESS ^hF344;
EXTERNAL BYTE BIOS_SLOT_ID ADDRESS ^hFCC1;

BYTE OLDRAMAD1;

BYTE WHILE_LOOP_COUNTER VALUE 0;
BYTE WHILE_LOOP_LIMIT VALUE 0;
BYTE DETECT_SLOT VALUE 0;
Expand All @@ -38,11 +46,8 @@ BEGIN
WORD EXTERNAL_DETECT_POINTER;
BYTE DETECT_STRING_LENGTH;
BYTE DETECT_CHAR_IN;

EXTERNAL BYTE FM_PAC_ENABLE ADDRESS ^h7FF6;

WORD DUMMY_WORD;
STRING STR_OUT LENGTH 15;

WORD GEMINI_COMMAND;
REDEFINE GEMINI_COMMAND;
Expand Down Expand Up @@ -89,6 +94,8 @@ BEGIN
ENDREC;
ENDREDEF;

STRING STR_OUT LENGTH 15;

{------------------
{-- OPLL DEFINES --
{------------------
Expand Down Expand Up @@ -668,7 +675,7 @@ BEGIN
BYTE OPM4_INST;
BYTE OPM5_INST;

DISPLAY "GEMINI FM VERSION 0.5.1 BETA";
DISPLAY "GEMINI FM VERSION 0.5.2 BETA";
DISPLAY "CREATED BY _NETNOMAD";
DISPLAY "";

Expand Down Expand Up @@ -761,16 +768,16 @@ BEGIN
{-- WE FOUND AN MSX-MUSIC DEVICE. ENABLE IF PANASOFT --}
{------------------------------------------------------}
ENABLE INTERRUPTS;


MOVE DETECT_SLOT TO DETECT_CHAR_IN;
AND DETECT_CHAR_IN WITH ^b00000011;
CONVERT DETECT_CHAR_IN TO STR_OUT;

IF DETECT_SLOT > 127 THEN
AND DETECT_SLOT WITH ^b00001100
DIVIDE DETECT_SLOT BY 3;
CONVERT DETECT_SLOT TO GOAL_STRING;
MOVE DETECT_SLOT TO DETECT_CHAR_IN;
AND DETECT_CHAR_IN WITH ^b00001100
DIVIDE DETECT_CHAR_IN BY 3;
CONVERT DETECT_CHAR_IN TO GOAL_STRING;
APPEND ":" TO STR_OUT;
APPEND GOAL_STRING TO STR_OUT;
FI;
Expand All @@ -782,6 +789,7 @@ BEGIN
ELSE
DISPLAY "OPM DEVICE FOUND IN SLOT ",STR_OUT;
FI;

IF FOUND_STRING = "PAC2OPLL" THEN
DISPLAY "ENABLING FM-PAC...";
MOVE DETECT_SLOT TO OPLLSLOT;
Expand Down Expand Up @@ -844,7 +852,7 @@ BEGIN
MOVE ^hF2 TO OPLL_DATA_OUT;
CALL SUB_OPLL_WRITE;
ELSE
DISPLAY "INITIALIZING OPM..."
DISPLAY "INITIALIZING OPM..."

MCALL BIOS_ENASLT USING ,,^b0100000000000000,DETECT_SLOT;

Expand Down Expand Up @@ -1054,8 +1062,7 @@ BEGIN
MOVE ^h0F TO OPM_DATA_OUT;
CALL SUB_OPM_WRITE;

{--TODO DON'T ASSUME
MCALL BIOS_ENASLT USING ,,^b0100000000000000,3;
MCALL BIOS_ENASLT USING ,,^b0100000000000000,OLDRAMAD1;

FI;

Expand Down Expand Up @@ -1148,6 +1155,7 @@ BEGIN
SUBTRACT 1 FROM WAIT_COUNT;
ELSE
IF OPM_NOT_FOUND = 0 THEN
MOVE RAMAD1 TO OLDRAMAD1;
MCALL BIOS_ENASLT USING ,,^b0100000000000000,DETECT_SLOT;
FI;

Expand Down Expand Up @@ -1176,8 +1184,7 @@ BEGIN
^h04: CALL SUB_SET_LOOP;
^h0F: BEGIN
MOVE 0 TO GEMINI_NOT_PAUSED;
{-- TODO DON'T ASSUME WHAT PAGE WE CAME FROM!!!
MCALL BIOS_ENASLT USING ,,^b0100000000000000,3;
MCALL BIOS_ENASLT USING ,,^b0100000000000000,OLDRAMAD1;
EXIT;
END;
^h10 - ^h16: CALL SUB_OPM_NOTE_ON;
Expand All @@ -1193,8 +1200,7 @@ BEGIN
OD;

IF OPM_NOT_FOUND = 0 THEN
{-- TODO DON'T ASSUME WHAT PAGE WE CAME FROM!!!
MCALL BIOS_ENASLT USING ,,^b0100000000000000,3;
MCALL BIOS_ENASLT USING ,,^b0100000000000000,OLDRAMAD1;
FI;
FI;
ELSE
Expand Down Expand Up @@ -1465,8 +1471,6 @@ BEGIN
EXIT;

SUB_OPM_SET_INSTRUMENT:

{--TODO PRESERVE VOLUME ON INSTRUMENT CHANGE

MOVE GEMINI_COMMAND_BYTECODE TO OPM_INST_POINTER;
SUBTRACT ^h20 FROM OPM_INST_POINTER;
Expand Down Expand Up @@ -1829,7 +1833,7 @@ BEGIN

SWITCH ON @OPM_INST_POINTER:
{--6: MOVE 0 TO OPM_DATA_OUT;
7: SUBTRACT 5 FROM OPM_DATA_OUT;
7: SUBTRACT 10 FROM OPM_DATA_OUT;
ENDSWITCH;


Expand Down

0 comments on commit 7855dc9

Please sign in to comment.