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