Skip to content

Commit

Permalink
Update GEMINIFM.SRC
Browse files Browse the repository at this point in the history
Cleanup
  • Loading branch information
TheNetNomad committed Apr 15, 2022
1 parent 32782db commit c189295
Showing 1 changed file with 35 additions and 186 deletions.
221 changes: 35 additions & 186 deletions GEMINIFM.SRC
Original file line number Diff line number Diff line change
Expand Up @@ -1106,24 +1106,16 @@ BEGIN
BYTE OPM4_INST;
BYTE OPM5_INST;

DISPLAY "GEMINI FM VERSION 0.5.7 BETA";
DISPLAY "GEMINI FM VERSION 1.0";
DISPLAY "CREATED BY _NETNOMAD";
DISPLAY "";

{----------------------------------------------------------}
{-- FIRST WE SEARCH FOR A YAMAHA SFG DEVICE IN ALL SLOTS --}
{----------------------------------------------------------}
MOVE "MCHFM0" TO GOAL_STRING;

MOVE 6 TO DETECT_STRING_LENGTH;
MOVE 4 TO WHILE_LOOP_LIMIT;
MOVE DETECT_MCHFM0_ADDR TO DETECT_ADDR;

CALL SUB_SEARCH_FOR_DETECTION_STRING;

MOVE 128 TO DETECT_SLOT;
MOVE 144 TO WHILE_LOOP_LIMIT;

CALL SUB_SEARCH_FOR_DETECTION_STRING;

MOVE 1 TO OPM_NOT_FOUND;
Expand All @@ -1134,37 +1126,22 @@ BEGIN
{---------------------------------------------------------------}
MOVE "APRLOPLL" TO GOAL_STRING;
MOVE 8 TO DETECT_STRING_LENGTH;
MOVE 4 TO WHILE_LOOP_LIMIT;
MOVE DETECT_APRLOPLL_ADDR TO DETECT_ADDR;

CALL SUB_SEARCH_FOR_DETECTION_STRING;

MOVE 128 TO DETECT_SLOT;
MOVE 144 TO WHILE_LOOP_LIMIT;

CALL SUB_SEARCH_FOR_DETECTION_STRING;

{---------------------------------------------------------------}
{-- NOW WE SEARCH FOR PANASOFT FM-PAC, WHICH MUST BE ENABLED --}
{---------------------------------------------------------------}
MOVE "PAC2OPLL" TO GOAL_STRING;
MOVE 4 TO WHILE_LOOP_LIMIT;
CALL SUB_SEARCH_FOR_DETECTION_STRING;

MOVE 128 TO DETECT_SLOT;
MOVE 144 TO WHILE_LOOP_LIMIT;
CALL SUB_SEARCH_FOR_DETECTION_STRING;


DISPLAY "!!! NO SFG OR FM-PAC FOUND !!!"

GOTO END;

{--Adapted from http://map.grauw.nl/sources/getslot.php
SUB_GETSLT:
{--BYTE GS01 VALUE ^hCD;
{--BYTE GS02 VALUE ^h38;
{--BYTE GS03 VALUE ^h01;

BYTE GS01 VALUE ^hDB;
BYTE GS02 VALUE ^hA8;

Expand Down Expand Up @@ -1239,36 +1216,7 @@ BEGIN
CALL SUB_ALL_NOTE_OFF;

GOTO END;
MCALL DOS_ENASLT USING ,,^b0100000000000000,DETECT_SLOT;

IF OPM_NOT_FOUND <> 0 THEN
MOVE #OPLL0_CNTL TO OPLL_CNTL;
MOVE OPLL_CNTL_BASE TO OPLL_REG_OUT;
WHILE OPLL_CNTL < #OPLL5_INSTVOL DO
AND @OPLL_CNTL WITH ^b11101111
MOVE @OPLL_CNTL TO OPLL_DATA_OUT;
CALL SUB_OPLL_WRITE;
ADD 1 TO OPLL_REG_OUT;
ADD 4 to OPLL_CNTL;
OD;

MOVE ^b00100000 TO OPLL_RHYTHM;
MOVE OPLL_RHYTHM TO OPLL_DATA_OUT;
MOVE OPLL_RHYTHM_BASE TO OPLL_REG_OUT;
CALL SUB_OPLL_WRITE;
ELSE
MOVE OPM_CNTL_REG TO OPM_REG_OUT;
MOVE 0 TO OPM_DATA_OUT;
WHILE OPM_DATA_OUT < 8 DO
CALL SUB_OPM_WRITE;
ADD 1 TO OPM_DATA_OUT;
OD;
FI;



MCALL BIOS_ENASLT USING ,,^b0100000000000000,RAMAD1;
GOTO END;


PAC2_ACTIVATE:
{------------------------------------------------------------}
Expand Down Expand Up @@ -1321,17 +1269,7 @@ BEGIN
{-------------------------------}

MCALL SUB_GETSLT USING ,,^h7F00 GIVING ,,,RETURN_SLOT;

{--CONVERT RETURN_SLOT TO HEX STR_OUT;
{--DISPLAY "OLD PAGE 2 ", STR_OUT;

{--DISPLAY "ENABLING DETECTED SLOT IN PAGE 2..."
MCALL DOS_ENASLT USING ,,^b0100000000000000,DETECT_SLOT;

{--MCALL SUB_GETSLT USING ,,^h7F00 GIVING ,,,INCHAR;
{--CONVERT INCHAR TO HEX STR_OUT;
{--DISPLAY "NEW PAGE 2 ", STR_OUT;

MCALL BIOS_ENASLT USING ,,^b0100000000000000,DETECT_SLOT;

IF OPM_NOT_FOUND THEN
DISPLAY "INITIALIZING OPLL...";
Expand Down Expand Up @@ -1592,7 +1530,7 @@ BEGIN
CALL SUB_OPM_WRITE;
FI;

MCALL DOS_ENASLT USING ,,^b0100000000000000,RETURN_SLOT;
MCALL BIOS_ENASLT USING ,,^b0100000000000000,RETURN_SLOT;
ENABLE INTERRUPTS;

{----------}
Expand Down Expand Up @@ -1684,12 +1622,14 @@ BEGIN
GOTO TERMINATE;
FI;

IF WHEEL_POSITION < 32786 THEN
DISPLAY "X~1E~";
ELSE
DISPLAY "+~1E~";
IF GEMINI_NOT_PAUSED = 1 THEN
IF WHEEL_POSITION < 32786 THEN
DISPLAY "X~1E~";
ELSE
DISPLAY "+~1E~";
FI;
ADD 5000 TO WHEEL_POSITION;
FI;
ADD 5000 TO WHEEL_POSITION;

GOTO MAIN;

Expand Down Expand Up @@ -1879,7 +1819,6 @@ BEGIN
{-- OUTPUT: none --}
{-- CALLS: SUB_WAIT --}
{----------------------------------------}

{--MCALL WRTOPL USING ,OPLL_DATA_OUT,,OPLL_REG_OUT;
{--EXIT;

Expand Down Expand Up @@ -2133,7 +2072,6 @@ BEGIN


MOVE GEMINI_COMMAND_BYTECODE TO OPM_REG_OUT;
{--ADD ^h20 TO OPM_REG_OUT;

MOVE @OPM_INST_POINTER TO OPM_DATA_OUT;

Expand Down Expand Up @@ -2189,25 +2127,8 @@ BEGIN
^h2: MOVE ^h34 TO OPM_DATA_OUT;
^h1: MOVE ^h38 TO OPM_DATA_OUT;
^h0: MOVE ^hFF TO OPM_DATA_OUT;
{--^hF: MOVE 00 TO OPM_DATA_OUT;
{--^hE: MOVE 7 TO OPM_DATA_OUT;
{--^hD: MOVE 14 TO OPM_DATA_OUT;
{--^hC: MOVE 21 TO OPM_DATA_OUT;
{--^hB: MOVE 28 TO OPM_DATA_OUT;
{--^hA: MOVE 35 TO OPM_DATA_OUT;
{--^h9: MOVE 42 TO OPM_DATA_OUT;
{--^h8: MOVE 49 TO OPM_DATA_OUT;
{--^h7: MOVE 56 TO OPM_DATA_OUT;
{--^h6: MOVE 63 TO OPM_DATA_OUT;
{--^h5: MOVE 70 TO OPM_DATA_OUT;
{--^h4: MOVE 77 TO OPM_DATA_OUT;
{--^h3: MOVE 84 TO OPM_DATA_OUT;
{--^h2: MOVE 91 TO OPM_DATA_OUT;
{--^h1: MOVE 108 TO OPM_DATA_OUT;
{--^h0: MOVE 127 TO OPM_DATA_OUT;
ENDSWITCH;
ADD 7 TO OPM_DATA_OUT; {--DEBUG
{--MOVE 127 TO OPM_DATA_OUT;
CALL SUB_OPM_WRITE;

MOVE OPM_CNTL_REG TO OPM_REG_OUT;
Expand Down Expand Up @@ -2238,22 +2159,6 @@ BEGIN
^h2: MOVE ^h3C TO OPM_DATA_OUT;
^h1: MOVE ^h40 TO OPM_DATA_OUT;
^h0: MOVE ^hFF TO OPM_DATA_OUT;
{--^hF: MOVE 7 TO OPM_DATA_OUT;
{--^hE: MOVE 7 TO OPM_DATA_OUT;
{--^hD: MOVE 14 TO OPM_DATA_OUT;
{--^hC: MOVE 21 TO OPM_DATA_OUT;
{--^hB: MOVE 28 TO OPM_DATA_OUT;
{--^hA: MOVE 35 TO OPM_DATA_OUT;
{--^h9: MOVE 42 TO OPM_DATA_OUT;
{--^h8: MOVE 49 TO OPM_DATA_OUT;
{--^h7: MOVE 56 TO OPM_DATA_OUT;
{--^h6: MOVE 63 TO OPM_DATA_OUT;
{--^h5: MOVE 70 TO OPM_DATA_OUT;
{--^h4: MOVE 77 TO OPM_DATA_OUT;
{--^h3: MOVE 84 TO OPM_DATA_OUT;
{--^h2: MOVE 91 TO OPM_DATA_OUT;
{--^h1: MOVE 108 TO OPM_DATA_OUT;
{--^h0: MOVE 127 TO OPM_DATA_OUT;
ENDSWITCH;
SUBTRACT 7 FROM OPM_DATA_OUT; {--DEBUG
CALL SUB_OPM_WRITE;
Expand Down Expand Up @@ -2295,24 +2200,8 @@ BEGIN
^h2: MOVE ^h64 TO OPM_DATA_OUT;
^h1: MOVE ^h68 TO OPM_DATA_OUT;
^h0: MOVE ^hFF TO OPM_DATA_OUT;
{--^hF: MOVE 20 TO OPM_DATA_OUT;
{--^hE: MOVE 27 TO OPM_DATA_OUT;
{--^hD: MOVE 34 TO OPM_DATA_OUT;
{--^hC: MOVE 41 TO OPM_DATA_OUT;
{--^hB: MOVE 48 TO OPM_DATA_OUT;
{--^hA: MOVE 55 TO OPM_DATA_OUT;
{--^h9: MOVE 62 TO OPM_DATA_OUT;
{--^h8: MOVE 69 TO OPM_DATA_OUT;
{--^h7: MOVE 76 TO OPM_DATA_OUT;
{--^h6: MOVE 83 TO OPM_DATA_OUT;
{--^h5: MOVE 90 TO OPM_DATA_OUT;
{--^h4: MOVE 97 TO OPM_DATA_OUT;
{--^h3: MOVE 104 TO OPM_DATA_OUT;
{--^h2: MOVE 111 TO OPM_DATA_OUT;
{--^h1: MOVE 118 TO OPM_DATA_OUT;
{--^h0: MOVE 127 TO OPM_DATA_OUT;
ENDSWITCH;
ADD 15 TO OPM_DATA_OUT; {--DEBUG
ADD 5 TO OPM_DATA_OUT; {--DEBUG
CALL SUB_OPM_WRITE;

MOVE OPM_CNTL_REG TO OPM_REG_OUT;
Expand All @@ -2322,7 +2211,6 @@ BEGIN
AND GEMINI_COMMAND_DATA WITH ^b00001000 GIVING OPM_DATA_OUT;
IF OPM_DATA_OUT = ^b00001000 THEN
{--SNARE
{--MCALL BIOS_BEEP;
MOVE ^h0F TO OPM_REG_OUT;
MOVE ^h90 TO OPM_DATA_OUT;
CALL SUB_OPM_WRITE;
Expand All @@ -2349,24 +2237,8 @@ BEGIN
^h2: MOVE ^h64 TO OPM_DATA_OUT;
^h1: MOVE ^h68 TO OPM_DATA_OUT;
^h0: MOVE ^hFF TO OPM_DATA_OUT;
{--^hF: MOVE 40 TO OPM_DATA_OUT;
{--^hE: MOVE 46 TO OPM_DATA_OUT;
{--^hD: MOVE 52 TO OPM_DATA_OUT;
{--^hC: MOVE 58 TO OPM_DATA_OUT;
{--^hB: MOVE 64 TO OPM_DATA_OUT;
{--^hA: MOVE 70 TO OPM_DATA_OUT;
{--^h9: MOVE 76 TO OPM_DATA_OUT;
{--^h8: MOVE 82 TO OPM_DATA_OUT;
{--^h7: MOVE 88 TO OPM_DATA_OUT;
{--^h6: MOVE 94 TO OPM_DATA_OUT;
{--^h5: MOVE 100 TO OPM_DATA_OUT;
{--^h4: MOVE 106 TO OPM_DATA_OUT;
{--^h3: MOVE 112 TO OPM_DATA_OUT;
{--^h2: MOVE 118 TO OPM_DATA_OUT;
{--^h1: MOVE 124 TO OPM_DATA_OUT;
{--^h0: MOVE 127 TO OPM_DATA_OUT;
ENDSWITCH;
ADD 15 TO OPM_DATA_OUT; {--DEBUG
ADD 5 TO OPM_DATA_OUT; {--DEBUG
CALL SUB_OPM_WRITE;

MOVE OPM_CNTL_REG TO OPM_REG_OUT;
Expand All @@ -2387,39 +2259,23 @@ BEGIN
MOVE ^h7F TO OPM_REG_OUT;
SWITCH ON OPM_HH_VOL:
^hF: MOVE ^h30 TO OPM_DATA_OUT;
^hE: MOVE ^h34 TO OPM_DATA_OUT;
^hD: MOVE ^h38 TO OPM_DATA_OUT;
^hC: MOVE ^h3C TO OPM_DATA_OUT;
^hB: MOVE ^h40 TO OPM_DATA_OUT;
^hA: MOVE ^h44 TO OPM_DATA_OUT;
^h9: MOVE ^h48 TO OPM_DATA_OUT;
^h8: MOVE ^h4C TO OPM_DATA_OUT;
^h7: MOVE ^h50 TO OPM_DATA_OUT;
^h6: MOVE ^h54 TO OPM_DATA_OUT;
^h5: MOVE ^h58 TO OPM_DATA_OUT;
^h4: MOVE ^h5C TO OPM_DATA_OUT;
^h3: MOVE ^h60 TO OPM_DATA_OUT;
^h2: MOVE ^h64 TO OPM_DATA_OUT;
^h1: MOVE ^h68 TO OPM_DATA_OUT;
^h0: MOVE ^hFF TO OPM_DATA_OUT;
{--^hF: MOVE 40 TO OPM_DATA_OUT;
{--^hE: MOVE 46 TO OPM_DATA_OUT;
{--^hD: MOVE 52 TO OPM_DATA_OUT;
{--^hC: MOVE 58 TO OPM_DATA_OUT;
{--^hB: MOVE 64 TO OPM_DATA_OUT;
{--^hA: MOVE 70 TO OPM_DATA_OUT;
{--^h9: MOVE 76 TO OPM_DATA_OUT;
{--^h8: MOVE 82 TO OPM_DATA_OUT;
{--^h7: MOVE 88 TO OPM_DATA_OUT;
{--^h6: MOVE 94 TO OPM_DATA_OUT;
{--^h5: MOVE 100 TO OPM_DATA_OUT;
{--^h4: MOVE 106 TO OPM_DATA_OUT;
{--^h3: MOVE 112 TO OPM_DATA_OUT;
{--^h2: MOVE 118 TO OPM_DATA_OUT;
{--^h1: MOVE 124 TO OPM_DATA_OUT;
{--^h0: MOVE 127 TO OPM_DATA_OUT;
^hE: MOVE ^h34 TO OPM_DATA_OUT;
^hD: MOVE ^h38 TO OPM_DATA_OUT;
^hC: MOVE ^h3C TO OPM_DATA_OUT;
^hB: MOVE ^h40 TO OPM_DATA_OUT;
^hA: MOVE ^h44 TO OPM_DATA_OUT;
^h9: MOVE ^h48 TO OPM_DATA_OUT;
^h8: MOVE ^h4C TO OPM_DATA_OUT;
^h7: MOVE ^h50 TO OPM_DATA_OUT;
^h6: MOVE ^h54 TO OPM_DATA_OUT;
^h5: MOVE ^h58 TO OPM_DATA_OUT;
^h4: MOVE ^h5C TO OPM_DATA_OUT;
^h3: MOVE ^h60 TO OPM_DATA_OUT;
^h2: MOVE ^h64 TO OPM_DATA_OUT;
^h1: MOVE ^h68 TO OPM_DATA_OUT;
^h0: MOVE ^hFF TO OPM_DATA_OUT;
ENDSWITCH;
ADD 15 TO OPM_DATA_OUT; {--DEBUG
ADD 5 TO OPM_DATA_OUT; {--DEBUG
CALL SUB_OPM_WRITE;

MOVE OPM_CNTL_REG TO OPM_REG_OUT;
Expand Down Expand Up @@ -2538,10 +2394,9 @@ BEGIN
^h0: MOVE ^hFF TO OPM_DATA_OUT;
ENDSWITCH;

{-- PER-INSTRUMENT OFFSETS
{-- REMEMBER THESE ARE *ATTENUATION VALUES* - SUBTRACTION FOR LOUDER AND ADDITION FOR QUIETER!!!
SWITCH ON @OPM_INST_POINTER:
^h00: NULL;
^h00: SUBTRACT ^h04 FROM OPM_DATA_OUT;
^h01: NULL;
^h02: NULL;
^h03: NULL;
Expand All @@ -2562,16 +2417,16 @@ BEGIN
^h13: NULL;
^h14: NULL;
^h15: ADD ^h04 TO OPM_DATA_OUT;
^h16: NULL;
^h16: ADD ^h04 TO OPM_DATA_OUT;
^h17: SUBTRACT ^h04 FROM OPM_DATA_OUT;
^h18: NULL;
^h19: ADD ^h04 TO OPM_DATA_OUT;
^h1A: NULL;
^h1B: NULL;
^h1C: NULL;
^h1C: SUBTRACT ^h02 FROM OPM_DATA_OUT;
^h1D: NULL;
^h1E: NULL;
^h1F: NULL;
^h1F: ADD ^h04 TO OPM_DATA_OUT;
ENDSWITCH;


Expand All @@ -2597,18 +2452,12 @@ BEGIN

EXIT;

SUB_OPM_WRITE:
{--CONVERT OPM_REG_OUT TO HEX STR_OUT;
{--DISPLAY "WRITING ", STR_OUT, " TO 7FF0";

SUB_OPM_WRITE:
WHILE OPM_STATUS_ADDR > ^b01111111 DO
OD;

MOVE OPM_REG_OUT TO OPM_REG_ADDR;

{--CONVERT OPM_DATA_OUT TO HEX STR_OUT;
{--DISPLAY "WRITING ", STR_OUT, " TO 7FF1";

WHILE OPM_STATUS_ADDR > ^b01111111 DO
OD;

Expand Down

0 comments on commit c189295

Please sign in to comment.