diff --git a/GEMINIFM.SRC b/GEMINIFM.SRC index cb6d7bd..d68259d 100644 --- a/GEMINIFM.SRC +++ b/GEMINIFM.SRC @@ -1106,7 +1106,7 @@ 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 ""; @@ -1114,16 +1114,8 @@ BEGIN {-- 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; @@ -1134,26 +1126,15 @@ 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 !!!" @@ -1161,10 +1142,6 @@ BEGIN {--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; @@ -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: {------------------------------------------------------------} @@ -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..."; @@ -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; {----------} @@ -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; @@ -1879,7 +1819,6 @@ BEGIN {-- OUTPUT: none --} {-- CALLS: SUB_WAIT --} {----------------------------------------} - {--MCALL WRTOPL USING ,OPLL_DATA_OUT,,OPLL_REG_OUT; {--EXIT; @@ -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; @@ -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; @@ -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; @@ -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; @@ -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; @@ -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; @@ -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; @@ -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; @@ -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; @@ -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;