Fixed JSL issue with IEC sleep functions
This commit is contained in:
parent
01b2765ab0
commit
5cf53976c5
|
@ -17,6 +17,7 @@
|
|||
.public iecll_listen
|
||||
.public iecll_listen_sa
|
||||
.public iecll_unlisten
|
||||
.public iecll_reset
|
||||
|
||||
#include "F256/iec_f256.h"
|
||||
|
||||
|
@ -86,6 +87,9 @@ read_DATA: read_bit IEC_DATA_i
|
|||
assert_DATA: assert_bit IEC_DATA_o
|
||||
release_DATA: release_bit IEC_DATA_o
|
||||
|
||||
assert_RST: assert_bit IEC_RST_o
|
||||
release_RST: release_bit IEC_RST_o
|
||||
|
||||
;;
|
||||
;; Routines to wait various amounts of time
|
||||
;;
|
||||
|
@ -99,20 +103,20 @@ _loop$ dex
|
|||
|
||||
sleep_100us: phx
|
||||
ldx #5
|
||||
_loop$ jsl sleep_20us
|
||||
_loop$ jsr sleep_20us
|
||||
dex
|
||||
bne _loop$
|
||||
plx
|
||||
rts
|
||||
|
||||
sleep_300us: jsl sleep_100us
|
||||
jsl sleep_100us
|
||||
jsl sleep_100us
|
||||
sleep_300us: jsr sleep_100us
|
||||
jsr sleep_100us
|
||||
jsr sleep_100us
|
||||
rts
|
||||
|
||||
sleep_1ms: jsl sleep_300us
|
||||
jsl sleep_300us
|
||||
jsl sleep_300us
|
||||
sleep_1ms: jsr sleep_300us
|
||||
jsr sleep_300us
|
||||
jsr sleep_300us
|
||||
jmp sleep_100us
|
||||
|
||||
;;
|
||||
|
@ -315,6 +319,7 @@ zero$ jsr assert_DATA
|
|||
bra clock$
|
||||
|
||||
one$ jsr release_DATA
|
||||
bra clock$
|
||||
|
||||
clock$
|
||||
; Toggle the clock
|
||||
|
@ -660,3 +665,17 @@ queue$ sta queue
|
|||
|
||||
plp
|
||||
rtl
|
||||
|
||||
;
|
||||
; Trigger the reset line on the IEC port
|
||||
;
|
||||
iecll_reset: php
|
||||
sei
|
||||
sep #0x30
|
||||
|
||||
jsr assert_RST
|
||||
jsr sleep_1ms
|
||||
jsr release_RST
|
||||
|
||||
plp
|
||||
rtl
|
|
@ -41,10 +41,13 @@
|
|||
#define HAS_EXTERNAL_SIDS 1
|
||||
#define HAS_OPL3 1
|
||||
#define HAS_PATA 1
|
||||
#elif MODEL == MODEL_FOENIX_F256KE
|
||||
#elif MODEL == MODEL_FOENIX_F256KE || MODEL == MODEL_FOENIX_F256K
|
||||
#define HAS_EXTERNAL_SIDS 1
|
||||
#define HAS_OPL3 1
|
||||
#define HAS_IEC 1
|
||||
#elif MODEL == MODEL_FOENIX_F256
|
||||
#define HAS_OPL3 1
|
||||
#define HAS_IEC 1
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -88,4 +88,10 @@ extern short iecll_eoi();
|
|||
*/
|
||||
extern void iecll_out(uint8_t byte);
|
||||
|
||||
/**
|
||||
* @brief Assert and release the reset line on the IEC bus
|
||||
*
|
||||
*/
|
||||
extern void iecll_reset();
|
||||
|
||||
#endif
|
|
@ -51,6 +51,7 @@
|
|||
#include "dev/fdc.h"
|
||||
#include "dev/fsys.h"
|
||||
#include "dev/iec.h"
|
||||
#include "iecll.h"
|
||||
#include "dev/ps2.h"
|
||||
#include "dev/rtc.h"
|
||||
#include "dev/sdc.h"
|
||||
|
@ -176,9 +177,9 @@ void initialize() {
|
|||
INFO("Console installed.");
|
||||
}
|
||||
|
||||
#if HAS_IEC
|
||||
iec_init();
|
||||
#endif
|
||||
// #if HAS_IDE
|
||||
// iec_init();
|
||||
// #endif
|
||||
|
||||
/* Initialize the timers the MCP uses */
|
||||
timers_init();
|
||||
|
@ -485,13 +486,16 @@ int main(int argc, char * argv[]) {
|
|||
kbd_init();
|
||||
|
||||
test_sysinfo();
|
||||
// test_psg();
|
||||
// test_kbd();
|
||||
long jiffies = timers_jiffies();
|
||||
printf("Jiffies: %ld\n", jiffies);
|
||||
|
||||
printf("Initializing IEC\n");
|
||||
result = iec_init();
|
||||
if (result != 0) {
|
||||
printf("Error initializing IEC.\n");
|
||||
}
|
||||
|
||||
printf("Attempting to get status for IEC drive #8: ");
|
||||
short n = iec_status(8, message, 256);
|
||||
|
||||
printf("\"%s\"\n", message);
|
||||
|
||||
// Attempt to start up the user code
|
||||
|
|
Loading…
Reference in a new issue