From a334a77d4ebd0466a5a5d1c6aede8ca6ffd5f346 Mon Sep 17 00:00:00 2001 From: flowenol Date: Thu, 7 Jan 2021 23:32:09 +0100 Subject: [PATCH] hardware recognition memory addresses added, fixed apple-1 to remote test program --- address_decoder.jed | 9 +++++---- address_decoder.log | 8 ++++---- addressdecoder.eqn | 1 + build.sh | 2 ++ firmware/main.c | 1 + src/apple1serial.xa | 7 +++++-- src/tests.xa | 29 +++++++++++++++++------------ 7 files changed, 35 insertions(+), 22 deletions(-) diff --git a/address_decoder.jed b/address_decoder.jed index f4b8188..25f3910 100644 --- a/address_decoder.jed +++ b/address_decoder.jed @@ -2,7 +2,7 @@ GAL20V8 EQN2JED - Boolean Equations to JEDEC file assembler (Version V101) Copyright (c) National Semiconductor Corporation 1990-1993 -Assembled from "d:/APPLE1~1/ADDRES~1.EQN". Date: 6-22-120 +Assembled from "d:/APPLE1~2/ADDRES~1.EQN". Date: 12-28-120 * NOTE PINS RW:2 A8:3 A7:4 A6:5 A5:6 A4:7 A3:8 A2:9 A1:10 A0:11* NOTE PINS GND:12 A9:14 A10:15 A11:16 SR:17 RD:18 WD:19 ROM:20* @@ -15,7 +15,8 @@ L0640 0111011011111111111111111111111111111111 0111111011111111111111111111111111011111 0111111011111111111111111111110111111111 -0111111011111111111111111101111111111111* +0111111011111111111111111101111111111111 +0111101001110111011101110110011011101111* L0960 1011101001011011101110111010101010100111* L1280 @@ -27,8 +28,8 @@ L2560 L2632 10000011* L2640 -0000000010000000111100001000000010000000100000000000000000000000* +0000000010000000111110001000000010000000100000000000000000000000* L2704 10* -C1FC4* +C236B* 0000 diff --git a/address_decoder.log b/address_decoder.log index a0d450e..ff23f54 100644 --- a/address_decoder.log +++ b/address_decoder.log @@ -1,7 +1,7 @@ EQN2JED - Boolean Equations to JEDEC file assembler (Version V101) Copyright (c) National Semiconductor Corporation 1990-1993 -Log file for d:/APPLE1~1/ADDRES~1.EQN +Log file for d:/APPLE1~2/ADDRES~1.EQN Device: 20V8 Pin Label Type @@ -43,12 +43,12 @@ No of feedbacks used as dedicated outputs : 3/6 (50.0%) Pin Label Terms Usage ------------------------------------------ 21 RES 1/8 (12.5%) - 20 ROM 4/8 (50.0%) + 20 ROM 5/8 (62.5%) 19 WD 1/8 (12.5%) 18 RD 1/8 (12.5%) 17 SR 1/8 (12.5%) ------------------------------------------ - Total Terms 8/64 (12.5%) + Total Terms 9/64 (14.1%) ------------------------------------------ EQN2JED - Boolean Equations to JEDEC file assembler (Version V101) @@ -69,5 +69,5 @@ Copyright (c) National Semiconductor Corporation 1990-1993 A2 | 9 16 | A11 A1 | 10 15 | A10 A0 | 11 14 | A9 - GND | 12 13 | + GND | 12 13 | |______________| diff --git a/addressdecoder.eqn b/addressdecoder.eqn index bb331a7..b5f4b8c 100644 --- a/addressdecoder.eqn +++ b/addressdecoder.eqn @@ -13,4 +13,5 @@ WD = A0 * /A1 * /A2 * /A3 * /A4 * /A5 * /A6 * A7 * /A8 * /A9 * /A10 * /A11 * /R + A9 * /R * RW + A10 * /R * RW + A11 * /R * RW + + A2 * A3 * A4 * A5 * A6 * A7 * /A8 * /A9 * /A10 * /A11 * /R * RW RES = A0 * /A1 * /A2 * /A3 * /A4 * /A5 * /A6 * /A7 * /A8 * /A9 * /A10 * /A11 * /R * RW diff --git a/build.sh b/build.sh index a73d3d4..739a087 100755 --- a/build.sh +++ b/build.sh @@ -1,3 +1,5 @@ #!/bin/sh xa -W -C -v -O ASCII -S -c src/apple1serial.xa -l apple1serial.label -o apple1serial.bin +make -C firmware clean +make -C firmware diff --git a/firmware/main.c b/firmware/main.c index 7117533..8e7883a 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -2,6 +2,7 @@ #define F_CPU 16000000UL #endif +// this seems to be the upper limit, above that some data is not received #define BAUD 9600 #include diff --git a/src/apple1serial.xa b/src/apple1serial.xa index ac77107..47550de 100644 --- a/src/apple1serial.xa +++ b/src/apple1serial.xa @@ -33,8 +33,11 @@ #define ESC $9B ;ASCII ESC #define SPACE $A0 -; pad first 256 bytes with zeroes -.dsb 256, 0 +; pad first 252 bytes with zeroes +.dsb 252, 0 + +; include identification bytes +.byt "A1SI" ; this section is almost identical to original WOZ ACI ; adapted from https://www.sbprojects.net/projects/apple1/aci.php diff --git a/src/tests.xa b/src/tests.xa index 19c79f1..dc46da6 100644 --- a/src/tests.xa +++ b/src/tests.xa @@ -5,6 +5,11 @@ #define serial_read $C080 #define serial_write $C081 +; How to store INTEGER BASIC progams? +; C100R - run serial monitor +; 004A.00FFW 0800.0FFFW - write data for default LOMEM & HIMEM +; E2B3R - warm entry point + * = $C300 .dsb (*-end_of_apple1serial), 0 @@ -14,12 +19,12 @@ teletype_apple1 = $C300 jsr reset_serial lda serial_read -wait +teletype_apple1_wait lda serial_ready - beq wait + beq teletype_apple1_wait lda serial_read jsr echo - jmp wait + jmp teletype_apple1_wait end_of_teletype_apple1 ; teletype on remote @@ -36,8 +41,12 @@ get_key lda kbd_cr bpl get_key lda kbd_data - sec - sbc #$A0 + and #$7F + tay +teletype_remote_wait + lda serial_ready + beq teletype_remote_wait + tya sta serial_write jmp get_key end_of_teletype_remote @@ -51,15 +60,11 @@ counter_remote = $C500 jsr reset_serial ldy #$00 sta serial_write -check_ready +counter_wait lda serial_ready - beq check_ready + beq counter_wait tya sta serial_write iny - jmp check_ready + jmp counter_wait end_of_counter_remote -; How to store INTEGER BASIC progams? -; C100R -; 004A.00FFW 0800.0FFFW -; E2B3R - warm entry point