Run into a timing problem with LCD interface. The LCD requires 100nS setup time and 300nS access time. The Z280 bus is 12MHz or 83nS from clock to clock. Each I/O access is 4 clocks and the WAIT signal is not available on RC2014 bus so I have to latch and stretch out the I/O access time in CPLD. This is where all the extra spare logics and flip flops really become handy.
Wrote a quick assembly to print "HELLO World!!" on the LCD display.
I ordered a Bunch of it at JLCPCB. But I have to use another Surface finish Namen Enig. Because they toll me:
In the order info, you chose HASL as surface finish. But the holes are too narrow and we cannot make that for you since the tin of the holes is easy to connect together to cause the short circurt.
Now I Hope it will work.
Kind regards
Olaf
ld a,80h ; load byte 0x80 into reg S1' so next byte will
out (regS1),a ; be loaded into reg S0'. serial interface off
ld a,55h ; load byte 0x55 into reg S0', effective
out (regS0),a ; own address becomes 0xAA
ld a,0a0h ; load byte 0xA0 into reg S1 so next byte will
out (regS1),a ; be loaded into the clock control reg S2
ld a,18h ; load byte 0x1C into reg S2, system clock is 8MHz
out (regS0),a ; SCL frequency is 90Khz
ld a,0c1h ; load byte 0xC1 into reg S1; reg enable serial interface
out (regS1),a ; set I2C bus into idle mode, SDA and SCL are high
; the next write or read will be to/from transfer reg S0PCF8584_RST at address 0xC2) in my CPLD to cleanly reset the PCF 8584 (and SSD1306). The values written to S1 (PCF8584_CSR at 0xC0) and S0 (PCF8584_DAT at 0xC1) seem to match yours.8514: I2C_INIT:
8514: F5 PUSH AF
8515: C5 PUSH BC
; reset PCF8584 with delay
8516: 3E01 LD A, 1
8518: D3C2 OUT ( PCF8584_RST ), A
851A: 010000 LD BC,0
851D: I2C_INIT_SLEEP:
851D: 10FE DJNZ I2C_INIT_SLEEP
851F: 0D DEC C
8520: 20FB JR NZ, I2C_INIT_SLEEP
8522: 3E00 LD A, 0
8524: D3C2 OUT ( PCF8584_RST ), A
8526: 3E80 LD A, PCF_PIN
8528: D3C1 OUT (PCF8584_CSR), A
; set own address
852A: 3E55 LD A, I2CID_Z80
852C: D3C0 OUT (PCF8584_DAT), A
; set clock (8MHz CPU clock) into S2
852E: 3EA0 LD A, PCF_PIN | PCF_ES1
8530: D3C1 OUT (PCF8584_CSR), A
8532: 3E18 LD A, PCF_CLK8 | PCF_TRNS90
8534: D3C0 OUT (PCF8584_DAT), A
; enable i/f
8536: 3EC1 LD A, PCF_IDLE
8538: D3C1 OUT (PCF8584_CSR), A
853A: C1 POP BC
853B: F1 POP AF
853C: C9 RET
--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+...@googlegroups.com.
To post to this group, send email to rc201...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/rc2014-z80/f53a93af-c8ed-48c4-b1fe-0a70acb6e6f0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
I see Phillip Stevens is working on MPM so perhaps 16K page size will be useful after all.
Bill Shen wrote:I see Phillip Stevens is working on MPM so perhaps 16K page size will be useful after all.Yes, whilst a first MP/M for RC2014 would be a non-banked version on the 64kB RAM board, it would be great to have a 48kB bankable or 3x 16kB bankable RAM version.The 32kB banks are a bit limiting for MP/M.MP/M prefers 16kB Common, and 8x 48kB banked. This is quite easy to do with a Z180, and I dare say also with Z280 too.But, I don't think there is any RC2014 memory board around today that supports this configuration exactly.
Phillip Stevens wrote:MP/M prefers 16kB Common, and 8x 48kB banked. But, I don't think there is any RC2014 memory board around today that supports this configuration exactly.
The 512K board does because it has individual control of each 16K so you just pin the top 16K and flip the others together. You get 10 48K banks a 16K common and 16K left over - so you could certainly do 6-8 48K banks plus a RAM disc.
Hi Bill,