From 0b6d576850368d8263f1bcad7b18dd2b864a833f Mon Sep 17 00:00:00 2001 From: Philip Smart Date: Sun, 12 Jul 2020 19:00:44 +0100 Subject: [PATCH] wip --- common/tranzputer.c | 3 + include/tranzputer.h | 171 ++++++++++++++------------------ libraries/lib/libimath2-k64f.a | Bin 12504 -> 12504 bytes libraries/lib/libumansi-k64f.a | Bin 124218 -> 124218 bytes libraries/lib/libummath-k64f.a | Bin 2660 -> 2660 bytes libraries/lib/libummathf-k64f.a | Bin 63972 -> 63972 bytes libraries/lib/libummisc-k64f.a | Bin 6222 -> 6222 bytes libraries/lib/libumstdio-k64f.a | Bin 80050 -> 80138 bytes zOS/Makefile.k64f | 3 +- 9 files changed, 81 insertions(+), 96 deletions(-) diff --git a/common/tranzputer.c b/common/tranzputer.c index cc01099..d0deee5 100644 --- a/common/tranzputer.c +++ b/common/tranzputer.c @@ -1086,6 +1086,7 @@ static void __attribute((naked, noinline)) irqPortC(void) // static void setupIRQ(void) { +return; __disable_irq(); // Setup the interrupts according to the mode the tranZPUter is currently running under. @@ -1184,6 +1185,7 @@ static void setupIRQ(void) // static void restoreIRQ(void) { +return; __disable_irq(); // Restore the interrupts according to the mode the tranZPUter is currently running under. @@ -1289,6 +1291,7 @@ void setupZ80Pins(uint8_t initTeensy, volatile uint32_t *millisecondTick) pinMap[Z80_MEM2] = Z80_MEM2_PIN; pinMap[Z80_MEM3] = Z80_MEM3_PIN; pinMap[Z80_MEM4] = Z80_MEM4_PIN; + pinMap[ENIOWAIT] = ENIOWAIT_PIN; pinMap[Z80_IORQ] = Z80_IORQ_PIN; pinMap[Z80_MREQ] = Z80_MREQ_PIN; diff --git a/include/tranzputer.h b/include/tranzputer.h index 1473b47..7f5a867 100755 --- a/include/tranzputer.h +++ b/include/tranzputer.h @@ -192,57 +192,58 @@ // Pin Constants - Pins assigned at the hardware level to specific tasks/signals. // -#define MAX_TRANZPUTER_PINS 52 -#define Z80_MEM0_PIN 46 -#define Z80_MEM1_PIN 47 -#define Z80_MEM2_PIN 48 -#define Z80_MEM3_PIN 49 -#define Z80_MEM4_PIN 50 -#define Z80_WR_PIN 10 -#define Z80_RD_PIN 12 +#define MAX_TRANZPUTER_PINS 53 +#define Z80_MEM0_PIN 16 +#define Z80_MEM1_PIN 17 +#define Z80_MEM2_PIN 19 +#define Z80_MEM3_PIN 18 +#define Z80_MEM4_PIN 49 +#define ENIOWAIT_PIN 50 +#define Z80_WR_PIN 48 +#define Z80_RD_PIN 55 #define Z80_IORQ_PIN 8 -#define Z80_MREQ_PIN 9 -#define Z80_A0_PIN 39 -#define Z80_A1_PIN 38 -#define Z80_A2_PIN 37 -#define Z80_A3_PIN 36 -#define Z80_A4_PIN 35 -#define Z80_A5_PIN 34 -#define Z80_A6_PIN 33 -#define Z80_A7_PIN 32 -#define Z80_A8_PIN 31 -#define Z80_A9_PIN 30 -#define Z80_A10_PIN 29 -#define Z80_A11_PIN 28 -#define Z80_A12_PIN 27 -#define Z80_A13_PIN 26 -#define Z80_A14_PIN 25 -#define Z80_A15_PIN 24 -#define Z80_A16_PIN 23 -#define Z80_A17_PIN 22 -#define Z80_A18_PIN 21 +#define Z80_MREQ_PIN 7 +#define Z80_A0_PIN 15 +#define Z80_A1_PIN 22 +#define Z80_A2_PIN 23 +#define Z80_A3_PIN 9 +#define Z80_A4_PIN 10 +#define Z80_A5_PIN 13 +#define Z80_A6_PIN 11 +#define Z80_A7_PIN 12 +#define Z80_A8_PIN 35 +#define Z80_A9_PIN 36 +#define Z80_A10_PIN 37 +#define Z80_A11_PIN 38 +#define Z80_A12_PIN 3 +#define Z80_A13_PIN 4 +#define Z80_A14_PIN 26 +#define Z80_A15_PIN 27 +#define Z80_A16_PIN 33 +#define Z80_A17_PIN 34 +#define Z80_A18_PIN 24 #define Z80_D0_PIN 0 #define Z80_D1_PIN 1 -#define Z80_D2_PIN 2 -#define Z80_D3_PIN 3 -#define Z80_D4_PIN 4 -#define Z80_D5_PIN 5 -#define Z80_D6_PIN 6 -#define Z80_D7_PIN 7 -#define Z80_WAIT_PIN 13 -#define Z80_BUSACK_PIN 17 -#define Z80_NMI_PIN 43 -#define Z80_INT_PIN 44 -#define Z80_RESET_PIN 54 -#define SYSCLK_PIN 11 -#define CTL_RFSH_PIN 45 -#define CTL_HALT_PIN 18 +#define Z80_D2_PIN 29 +#define Z80_D3_PIN 30 +#define Z80_D4_PIN 43 +#define Z80_D5_PIN 46 +#define Z80_D6_PIN 44 +#define Z80_D7_PIN 45 +#define Z80_WAIT_PIN 54 +#define Z80_BUSACK_PIN 5 +#define Z80_NMI_PIN 39 +#define Z80_INT_PIN 28 +#define Z80_RESET_PIN 6 +#define SYSCLK_PIN 25 +#define CTL_RFSH_PIN 53 +#define CTL_HALT_PIN 51 #define CTL_M1_PIN 20 -#define CTL_BUSRQ_PIN 15 -#define CTL_BUSACK_PIN 16 +#define CTL_BUSRQ_PIN 2 +#define CTL_BUSACK_PIN 21 #define CTL_CLK_PIN 14 -#define CTL_CLKSLCT_PIN 19 -#define TZ_BUSACK_PIN 55 +#define CTL_CLKSLCT_PIN 47 +#define TZ_BUSACK_PIN 52 #define TZ_SVCREQ_PIN 56 #define TZ_SYSREQ_PIN 57 @@ -285,35 +286,14 @@ } #define pinIndex(a) getPinIndex(pinMap[a]) -#define setZ80Data(a) { pinSet(Z80_D7, ((a >> 7) & 0x1)); pinSet(Z80_D6, ((a >> 6) & 0x1));\ - pinSet(Z80_D5, ((a >> 5) & 0x1)); pinSet(Z80_D4, ((a >> 4) & 0x1));\ - pinSet(Z80_D3, ((a >> 3) & 0x1)); pinSet(Z80_D2, ((a >> 2) & 0x1));\ - pinSet(Z80_D1, ((a >> 1) & 0x1)); pinSet(Z80_D0, ((a ) & 0x1)); } -#define setZ80Addr(a) { pinSet(Z80_A15, ((a >> 15) & 0x1)); pinSet(Z80_A14, ((a >> 14) & 0x1));\ - pinSet(Z80_A13, ((a >> 13) & 0x1)); pinSet(Z80_A12, ((a >> 12) & 0x1));\ - pinSet(Z80_A11, ((a >> 11) & 0x1)); pinSet(Z80_A10, ((a >> 10) & 0x1));\ - pinSet(Z80_A9, ((a >> 9) & 0x1)); pinSet(Z80_A8, ((a >> 8) & 0x1));\ - pinSet(Z80_A7, ((a >> 7) & 0x1)); pinSet(Z80_A6, ((a >> 6) & 0x1));\ - pinSet(Z80_A5, ((a >> 5) & 0x1)); pinSet(Z80_A4, ((a >> 4) & 0x1));\ - pinSet(Z80_A3, ((a >> 3) & 0x1)); pinSet(Z80_A2, ((a >> 2) & 0x1));\ - pinSet(Z80_A1, ((a >> 1) & 0x1)); pinSet(Z80_A0, ((a ) & 0x1)); } -#define setZ80AddrLower(a) { pinSet(Z80_A7, ((a >> 7) & 0x1)); pinSet(Z80_A6, ((a >> 6) & 0x1));\ - pinSet(Z80_A5, ((a >> 5) & 0x1)); pinSet(Z80_A4, ((a >> 4) & 0x1));\ - pinSet(Z80_A3, ((a >> 3) & 0x1)); pinSet(Z80_A2, ((a >> 2) & 0x1));\ - pinSet(Z80_A1, ((a >> 1) & 0x1)); pinSet(Z80_A0, ((a ) & 0x1)); } -#define setZ80RefreshAddr(a) { pinSet(Z80_A6, ((a >> 6) & 0x1)); pinSet(Z80_A5, ((a >> 5) & 0x1));\ - pinSet(Z80_A4, ((a >> 4) & 0x1)); pinSet(Z80_A3, ((a >> 3) & 0x1));\ - pinSet(Z80_A2, ((a >> 2) & 0x1)); pinSet(Z80_A1, ((a >> 1) & 0x1));\ - pinSet(Z80_A0, ((a ) & 0x1)); } -#define readZ80AddrLower() ( pinGet(Z80_A7) << 7 | pinGet(Z80_A6) << 6 | pinGet(Z80_A5) << 5 | pinGet(Z80_A4) << 4 |\ - pinGet(Z80_A3) << 3 | pinGet(Z80_A2) << 2 | pinGet(Z80_A1) << 1 | pinGet(Z80_A0) ) -#define readZ80Addr(a) ( pinGet(Z80_A15) << 15 | pinGet(Z80_A14) << 14 | pinGet(Z80_A13) << 13 | pinGet(Z80_A12) << 12 |\ - pinGet(Z80_A11) << 11 | pinGet(Z80_A10) << 10 | pinGet(Z80_A9) << 9 | pinGet(Z80_A8) << 8 |\ - pinGet(Z80_A7) << 7 | pinGet(Z80_A6) << 6 | pinGet(Z80_A5) << 5 | pinGet(Z80_A4) << 4 |\ - pinGet(Z80_A3) << 3 | pinGet(Z80_A2) << 2 | pinGet(Z80_A1) << 1 | pinGet(Z80_A0) ) -#define readDataBus() ( pinGet(Z80_D7) << 7 | pinGet(Z80_D6) << 6 | pinGet(Z80_D5) << 5 | pinGet(Z80_D4) << 4 |\ - pinGet(Z80_D3) << 3 | pinGet(Z80_D2) << 2 | pinGet(Z80_D1) << 1 | pinGet(Z80_D0) ) -#define readCtrlLatch() ( (pinGet(Z80_MEM4) << 4 | pinGet(Z80_MEM3) << 3 | pinGet(Z80_MEM2) << 2 | pinGet(Z80_MEM1) << 1 | pinGet(Z80_MEM0)) & 0x1F ) +#define setZ80Data(a) { PORTB_GPCHR = 0x00FF0000 | (a & 0x000000ff); } +#define setZ80Addr(a) { PORTC_GPCLR = 0x0FFF0000 | (a & 0x00000fff); PORTA_GPCLR = 0xF0000000 | (a & 0x0000f0000); PORTE_GPCHR = 0x07000000 | ((a >> 8) & 0x00000700); } +#define setZ80AddrLower(a) { PORTC_GPCLR = 0x00FF0000 | (a & 0x000000ff); } +#define setZ80RefreshAddr(a) { PORTC_GPCLR = 0x007F0000 | (a & 0x0000007f); } +#define readZ80AddrLower() ( GPIOC_PDIR & 0x000000ff ) +#define readZ80Addr(a) ( (GPIOA_PDIR & 0x0000f0000) | (GPIOC_PDIR & 0x00000fff) ) +#define readDataBus() ( (GPIOB_PDIR >> 16) & 0x000000ff ) +#define readCtrlLatch() ( GPIOB_PDIR & 0x0000001f ) #define writeCtrlLatch(a) { writeZ80IO(IO_TZ_CTRLLATCH, a); } #define setZ80Direction(a) { for(uint8_t idx=Z80_D0; idx <= Z80_D7; idx++) { if(a == WRITE) { pinOutput(idx); } else { pinInput(idx); } }; z80Control.busDir = a; } #define reqZ80BusChange(a) { if(a == MAINBOARD_ACCESS && z80Control.ctrlMode == TRANZPUTER_ACCESS) \ @@ -379,29 +359,30 @@ enum pinIdxToPinNumMap { Z80_MEM2 = 29, Z80_MEM3 = 30, Z80_MEM4 = 31, + ENIOWAIT = 32, - Z80_IORQ = 32, - Z80_MREQ = 33, - Z80_RD = 34, - Z80_WR = 35, - Z80_WAIT = 36, - Z80_BUSACK = 37, + Z80_IORQ = 33, + Z80_MREQ = 34, + Z80_RD = 35, + Z80_WR = 36, + Z80_WAIT = 37, + Z80_BUSACK = 38, - Z80_NMI = 38, - Z80_INT = 39, - Z80_RESET = 40, - MB_SYSCLK = 41, - TZ_BUSACK = 42, - TZ_SVCREQ = 43, - TZ_SYSREQ = 44, + Z80_NMI = 39, + Z80_INT = 40, + Z80_RESET = 41, + MB_SYSCLK = 42, + TZ_BUSACK = 43, + TZ_SVCREQ = 44, + TZ_SYSREQ = 45, - CTL_BUSACK = 45, - CTL_BUSRQ = 46, - CTL_RFSH = 47, - CTL_HALT = 48, - CTL_M1 = 49, - CTL_CLK = 50, - CTL_CLKSLCT = 51 + CTL_BUSACK = 46, + CTL_BUSRQ = 47, + CTL_RFSH = 48, + CTL_HALT = 49, + CTL_M1 = 50, + CTL_CLK = 51, + CTL_CLKSLCT = 52 }; // Possible control modes that the K64F can be in, do nothing where the Z80 runs normally, control the Z80 and mainboard, or control the Z80 and tranZPUter. diff --git a/libraries/lib/libimath2-k64f.a b/libraries/lib/libimath2-k64f.a index 19264f4eee6e9b21b5c86eeab61d92c127c70200..c57ac11e9b5005da38f4e622882426f5f44f6f1a 100644 GIT binary patch delta 76 zcmcbScq4IwG`oq3xw(<0$wZ}E7<2MEN%4()XYs-Ko8$OBx!|02lC?ZA&g3|L@y(uU G{agTQ0u_k> delta 76 zcmcbScq4IwG`o?hp`oRj;Y6ic7<2MEN%4()XYs-Ko8$OBx!|02lC?ZA&g3|L@y(uU G{agTGq!mp7 diff --git a/libraries/lib/libumansi-k64f.a b/libraries/lib/libumansi-k64f.a index 6bc790c05f8fa27592aed37516159e8e63ba8dec..941204c0fcbbc5faa8ea73e8e67b29e30981424d 100644 GIT binary patch delta 807 zcmdmWihb89_6gGLCMM?QMwZ4Km7X&}*+!cMnD=tRIFkjKB{sj|IfyJEzWKD+KMt6R z%@^bs!a36y++vj2JV7Iq3nsnE*c4f>#O4s2o2UXlZaWbI7uHB_Rt3Kqoa+3`dST#)ohn(;v)Z6yN^d zg^`U1s=yc`Bpk@t#}5+%d2#!}1V*?YjX~kN{ZSSp+>^#YH%e{~En#edxzBj}gBr%W zFq@3QNof0>HpYoC$3boCp2+CO3$tlE&^>~19?;B$?GbAbAz{3I!4}3yxS8AbF)oC2 erUR{W+WzV|<7~JP*!PPsGJZq237C*)aRC6CcI|8c delta 807 zcmdmWihb89_6gGLMy7^_mSzSUm7X&}*rt}71(^48!Z?!!m?bv9;W>ybAinvu*gp=K zip>|~7s5Hy7u;f$*gQcalM5!j$=DQGuf*mMo13TtK5jb^0vFauZdMI=fe;X2&e~iT z6^szLAfK?=BE=DI<>rQ*UICbGVCU-8UW6;3WGt~+racjfFS&W{1PM4Fs3B{!+AM_m zn;RB;LS@YiHeXot7tWb{L0)3Az;~_bc|weGlMNJDHd}1>g*wB`0BDf-=EeKD5XwO& z%bkRo3{042tbf zI2mDK0Z|Wf;&z}D^WmC+PLtgJSBh~3lFl^}+mEO)+CrlV;{5IM`i!TzAwg+ou>FG- z<3qTP=?~^Hif@1K!pO!0QveYX4rJ`(hY5kaxcy)PBdQ;_Kgwc6^5g}1$?c&fj4g2Y zZGTY1co$(4C<$%9)5bUv?l_1|-4hx8cwshe2f9ZP&I5*1!uE(YNFlL(!4}3yxS8Ab jF)oC2rUR{W+WzV|<7~JPDDt*1zR36u;U=IfW^n-kn|SNh diff --git a/libraries/lib/libummath-k64f.a b/libraries/lib/libummath-k64f.a index 4a83f9d6f8a59a9c9c161e3790edc8db2cd201af..14106440f5ed068fba275699f6e4c2bd7ade7048 100644 GIT binary patch delta 29 ecmaDN@rt!fA)~%P={D}W3TwwD$xlT@) z>}ETSiEz&3b#fA$-x+Gc1vblB-$Zc!x%}jX>-!gE2bcS~ZkUjipWXU_S+Emx8_M`$hE0~Ume|ZRVJTe2=5;fl!Z~2&8yA1$hAH2?Zv9%gZzkJmNN%p) vSAtLu@&w-rMTCHz#*)pqF23b}>pyo(7a=QW?X=nD$#jGOC;)%Hea#I3m$7h^ delta 358 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 delta 7320 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 diff --git a/zOS/Makefile.k64f b/zOS/Makefile.k64f index 7dcb167..da2412e 100644 --- a/zOS/Makefile.k64f +++ b/zOS/Makefile.k64f @@ -48,7 +48,8 @@ TARGET = main TEENSY = 35 # Set to 24000000, 48000000, or 96000000 to set CPU core speed -TEENSY_CORE_SPEED = 168000000 +#TEENSY_CORE_SPEED = 168000000 +TEENSY_CORE_SPEED = 120000000 # Some libraries will require this to be defined # If you define this, you will break the default main.cpp