Fine tune
This commit is contained in:
parent
314604d2d0
commit
c893083d62
|
@ -3,7 +3,6 @@
|
|||
; $FFFC and $FFFD - RESET PROGRAM COUNTER
|
||||
|
||||
processor 6502
|
||||
|
||||
org $FF00
|
||||
|
||||
loop
|
||||
|
|
|
@ -1,258 +0,0 @@
|
|||
;-------------------------------------------------------------------------
|
||||
;
|
||||
; The WOZ Monitor for the Apple 1
|
||||
; Written by Steve Wozniak 1976
|
||||
;
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
processor 6502
|
||||
org $FF00
|
||||
|
||||
;-------------------------------------------------------------------------
|
||||
; Memory declaration
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
XAML equ $24 ;Last "opened" location Low
|
||||
XAMH equ $25 ;Last "opened" location High
|
||||
STL equ $26 ;Store address Low
|
||||
STH equ $27 ;Store address High
|
||||
L equ $28 ;Hex value parsing Low
|
||||
H equ $29 ;Hex value parsing High
|
||||
YSAV equ $2A ;Used to see if hex value is given
|
||||
MODE equ $2B ;$00=XAM, $7F=STOR, $AE=BLOCK XAM
|
||||
|
||||
IN equ $0200,$027F ;Input buffer
|
||||
|
||||
KBD equ $D010 ;PIA.A keyboard input
|
||||
KBDCR equ $D011 ;PIA.A keyboard control register
|
||||
DSP equ $D012 ;PIA.B display output register
|
||||
DSPCR equ $D013 ;PIA.B display control register
|
||||
|
||||
; KBD b7..b0 are inputs, b6..b0 is ASCII input, b7 is constant high
|
||||
; Programmed to respond to low to high KBD strobe
|
||||
; DSP b6..b0 are outputs, b7 is input
|
||||
; CB2 goes low when data is written, returns high when CB1 goes high
|
||||
; Interrupts are enabled, though not used. KBD can be jumpered to IRQ,
|
||||
; whereas DSP can be jumpered to NMI.
|
||||
|
||||
;-------------------------------------------------------------------------
|
||||
; Constants
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
BS equ $DF ;Backspace key, arrow left key
|
||||
CR equ $8D ;Carriage Return
|
||||
ESC equ $9B ;ESC key
|
||||
PROMPT equ "\\" ;Prompt character
|
||||
|
||||
;-------------------------------------------------------------------------
|
||||
; Let's get started
|
||||
;
|
||||
; Remark the RESET routine is only to be entered by asserting the RESET
|
||||
; line of the system. This ensures that the data direction registers
|
||||
; are selected.
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
RESET CLD ;Clear decimal arithmetic mode
|
||||
CLI
|
||||
LDY #%0111.1111 ;Mask for DSP data direction reg
|
||||
STY DSP ; (DDR mode is assumed after reset)
|
||||
LDA #%1010.0111 ;KBD and DSP control register mask
|
||||
STA KBDCR ;Enable interrupts, set CA1, CB1 for
|
||||
STA DSPCR ; positive edge sense/output mode.
|
||||
|
||||
; Program falls through to the GETLINE routine to save some program bytes
|
||||
; Please note that Y still holds $7F, which will cause an automatic Escape
|
||||
|
||||
;-------------------------------------------------------------------------
|
||||
; The GETLINE process
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
NOTCR CMP #BS ;Backspace key?
|
||||
BEQ BACKSPACE ;Yes
|
||||
CMP #ESC ;ESC?
|
||||
BEQ ESCAPE ;Yes
|
||||
INY ;Advance text index
|
||||
BPL NEXTCHAR ;Auto ESC if line longer than 127
|
||||
|
||||
ESCAPE LDA #PROMPT ;Print prompt character
|
||||
JSR ECHO ;Output it.
|
||||
|
||||
GETLINE LDA #CR ;Send CR
|
||||
JSR ECHO
|
||||
|
||||
LDY #0+1 ;Start a new input line
|
||||
BACKSPACE DEY ;Backup text index
|
||||
BMI GETLINE ;Oops, line's empty, reinitialize
|
||||
|
||||
NEXTCHAR LDA KBDCR ;Wait for key press
|
||||
BPL NEXTCHAR ;No key yet!
|
||||
LDA KBD ;Load character. B7 should be '1'
|
||||
STA IN,Y ;Add to text buffer
|
||||
JSR ECHO ;Display character
|
||||
CMP #CR
|
||||
BNE NOTCR ;It's not CR!
|
||||
|
||||
; Line received, now let's parse it
|
||||
|
||||
LDY #-1 ;Reset text index
|
||||
LDA #0 ;Default mode is XAM
|
||||
TAX ;X=0
|
||||
|
||||
SETSTOR ASL Leaves $7B if setting STOR mode
|
||||
|
||||
SETMODE STA MODE Set mode flags
|
||||
|
||||
BLSKIP INY Advance text index
|
||||
|
||||
NEXTITEM LDA IN,Y Get character
|
||||
CMP #CR
|
||||
BEQ GETLINE We're done if it's CR!
|
||||
CMP #"."
|
||||
BCC BLSKIP Ignore everything below "."!
|
||||
BEQ SETMODE Set BLOCK XAM mode ("." = $AE)
|
||||
CMP #":"
|
||||
BEQ SETSTOR Set STOR mode! $BA will become $7B
|
||||
CMP #"R"
|
||||
BEQ RUN Run the program! Forget the rest
|
||||
STX L Clear input value (X=0)
|
||||
STX H
|
||||
STY YSAV Save Y for comparison
|
||||
|
||||
; Here we're trying to parse a new hex value
|
||||
|
||||
NEXTHEX LDA IN,Y Get character for hex test
|
||||
EOR #$B0 Map digits to 0-9
|
||||
CMP #9+1 Is it a decimal digit?
|
||||
BCC DIG Yes!
|
||||
ADC #$88 Map letter "A"-"F" to $FA-FF
|
||||
CMP #$FA Hex letter?
|
||||
BCC NOTHEX No! Character not hex
|
||||
|
||||
DIG ASL
|
||||
ASL Hex digit to MSD of A
|
||||
ASL
|
||||
ASL
|
||||
|
||||
LDX #4 Shift count
|
||||
HEXSHIFT ASL Hex digit left, MSB to carry
|
||||
ROL L Rotate into LSD
|
||||
ROL H Rotate into MSD's
|
||||
DEX Done 4 shifts?
|
||||
BNE HEXSHIFT No, loop
|
||||
INY Advance text index
|
||||
BNE NEXTHEX Always taken
|
||||
|
||||
NOTHEX CPY YSAV Was at least 1 hex digit given?
|
||||
BEQ ESCAPE No! Ignore all, start from scratch
|
||||
|
||||
BIT MODE Test MODE byte
|
||||
BVC NOTSTOR B6=0 is STOR, 1 is XAM or BLOCK XAM
|
||||
|
||||
; STOR mode, save LSD of new hex byte
|
||||
|
||||
LDA L LSD's of hex data
|
||||
STA (STL,X) Store current 'store index'(X=0)
|
||||
INC STL Increment store index.
|
||||
BNE NEXTITEM No carry!
|
||||
INC STH Add carry to 'store index' high
|
||||
TONEXTITEM JMP NEXTITEM Get next command item.
|
||||
|
||||
;-------------------------------------------------------------------------
|
||||
; RUN user's program from last opened location
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
RUN JMP (XAML) Run user's program
|
||||
|
||||
;-------------------------------------------------------------------------
|
||||
; We're not in Store mode
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
NOTSTOR BMI XAMNEXT B7 = 0 for XAM, 1 for BLOCK XAM
|
||||
|
||||
; We're in XAM mode now
|
||||
|
||||
LDX #2 Copy 2 bytes
|
||||
SETADR LDA L-1,X Copy hex data to
|
||||
STA STL-1,X 'store index'
|
||||
STA XAML-1,X and to 'XAM index'
|
||||
DEX Next of 2 bytes
|
||||
BNE SETADR Loop unless X = 0
|
||||
|
||||
; Print address and data from this address, fall through next BNE.
|
||||
|
||||
NXTPRNT BNE PRDATA NE means no address to print
|
||||
LDA #CR Print CR first
|
||||
JSR ECHO
|
||||
LDA XAMH Output high-order byte of address
|
||||
JSR PRBYTE
|
||||
LDA XAML Output low-order byte of address
|
||||
JSR PRBYTE
|
||||
LDA #":" Print colon
|
||||
JSR ECHO
|
||||
|
||||
PRDATA LDA #" " Print space
|
||||
JSR ECHO
|
||||
LDA (XAML,X) Get data from address (X=0)
|
||||
JSR PRBYTE Output it in hex format
|
||||
XAMNEXT STX MODE 0 -> MODE (XAM mode).
|
||||
LDA XAML See if there's more to print
|
||||
CMP L
|
||||
LDA XAMH
|
||||
SBC H
|
||||
BCS TONEXTITEM Not less! No more data to output
|
||||
|
||||
INC XAML Increment 'examine index'
|
||||
BNE MOD8CHK No carry!
|
||||
INC XAMH
|
||||
|
||||
MOD8CHK LDA XAML If address MOD 8 = 0 start new line
|
||||
AND #%0000.0111
|
||||
BPL NXTPRNT Always taken.
|
||||
|
||||
;-------------------------------------------------------------------------
|
||||
; Subroutine to print a byte in A in hex form (destructive)
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
PRBYTE PHA Save A for LSD
|
||||
LSR
|
||||
LSR
|
||||
LSR MSD to LSD position
|
||||
LSR
|
||||
JSR PRHEX Output hex digit
|
||||
PLA Restore A
|
||||
|
||||
; Fall through to print hex routine
|
||||
|
||||
;-------------------------------------------------------------------------
|
||||
; Subroutine to print a hexadecimal digit
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
PRHEX AND #%0000.1111 Mask LSD for hex print
|
||||
ORA #"0" Add "0"
|
||||
CMP #"9"+1 Is it a decimal digit?
|
||||
BCC ECHO Yes! output it
|
||||
ADC #6 Add offset for letter A-F
|
||||
|
||||
; Fall through to print routine
|
||||
|
||||
;-------------------------------------------------------------------------
|
||||
; Subroutine to print a character to the terminal
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
ECHO BIT DSP DA bit (B7) cleared yet?
|
||||
BMI ECHO No! Wait for display ready
|
||||
STA DSP Output character. Sets DA
|
||||
RTS
|
||||
|
||||
;-------------------------------------------------------------------------
|
||||
; Vector area
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
.DA $0000 Unused, what a pity
|
||||
NMI_VEC .DA $0F00 NMI vector
|
||||
RESET_VEC .DA RESET RESET vector
|
||||
IRQ_VEC .DA $0000 IRQ vector
|
||||
|
||||
;-------------------------------------------------------------------------
|
||||
|
||||
.LI OFF
|
90
README.txt
90
README.txt
|
@ -1,75 +1,29 @@
|
|||
@@@@@@@@@@@@@@@@&^-;,;^&#@@@@@@@@@@@@@@@
|
||||
@@@@@@@@@@@@#**+ ..:;^*@@@@@@@@@@@@@
|
||||
@@@@@@@@@@&-:.. ... .+@@@@@@@@@@@@
|
||||
@@@@@@@@%! .. ....+%@@@@@@@@@@
|
||||
@@@@@@@#; . :^#@@@@@@@@
|
||||
@@@@@@@= .:;;: =@@@@@@@@
|
||||
@@@@@@@; ,,. .. :!+=-: :=@@@@@@@
|
||||
@@@@@@*. :=?^!!--;;;^??=^, .&@@@@@@
|
||||
@@@@@@+ ,??=+++=+^^++^^+^: +@@@@@@
|
||||
@@@@@@? !=^;,::,-^-,..:;^! ,%@@@@@@
|
||||
@@@@@@* :++!,. :++: .:;^+: ?@@@@@@@
|
||||
@@@@@@%: ;?=+^!!!!-&%+--^+?&!.*@@@@@@@
|
||||
@@@@@@@+ ,:,=====+^^=&**?^^=??^:+@@@@@@@
|
||||
@@@@@@@#:,,.!-!!!;;!!!-^-;,;!-!.+@@@@@@@
|
||||
@@@@@@@@^ :;;,..,,. ..::..,;:,%@@@@@@@
|
||||
@@@@@@@@%-. ..::.::,;;!!;,,....?@@@@@@@@
|
||||
@@@@@@@@@%-! ...,;;!-^^^^,. :=@@@@@@@@@
|
||||
@@@@@@@@%?*=,. ..,;;,,,;;..,?@@@@@@@@@@
|
||||
@@@@##%*&%#&-,.....:....:..:+?%@@@@@@@@@
|
||||
@#%***%%####?;::. .......,!^**%#@@@@@@@
|
||||
%%%%##%%##%##=,,:::...::,!-;^##%%%##@@@@
|
||||
##%%%%%%%##%##?;,,,,;,;!-^!;+%####%%####
|
||||
%%%%%%%%%####*?+!;,,,,!--!,-?###%%%%%%%%
|
||||
WOZ
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@^^@@@@@@@@@@@@@
|
||||
@@@@@@@@@@@@@@@@@@@@@@^^^^^@@@@@@@@@@@@@
|
||||
@@@@@@@@@@@@@@@@@@@@@^^^^^@@@@@@@@@@@@@@
|
||||
@@@@@@@@@@@@@@@@@@@@^^^^^@@@@@@@@@@@@@@@
|
||||
@@@@@@@@@@@@@@@@@@@^^^^^@@@@@@@@@@@@@@@@
|
||||
@@@@@@@@@@@@^^^@@@@^^@@@@^^^^@@@@@@@@@@@
|
||||
@@@@@@@@^^^^^^^^^^^^^^^^^^^^^^^^^@@@@@@@
|
||||
@@@@@@^^^^^^^^^^^^^^^^^^^^^^^^^^^^@@@@@@
|
||||
@@@@@***************************@@@@@@@@
|
||||
@@@@***************************@@@@@@@@@
|
||||
@@@@**************************@@@@@@@@@@
|
||||
@@@+++++++++++++++++++++++++++@@@@@@@@@@
|
||||
@@@+++++++++++++++++++++++++++@@@@@@@@@@
|
||||
@@@++++++++++++++++++++++++++++@@@@@@@@@
|
||||
@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@
|
||||
@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@
|
||||
@@@@@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@
|
||||
@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@
|
||||
@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@
|
||||
@@@@@@@,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@
|
||||
@@@@@@@@@;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@
|
||||
@@@@@@@@@@;;;;;;;;@@@@;;;;;;;;@@@@@@@@@@
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
#Apple 1 Replica
|
||||
|
||||
|
||||
W65C02S <-> Arduino Due
|
||||
|
||||
3.3v GND 3.3v Arduino Due
|
||||
3.3v GND 3.3v
|
||||
| | +------\/------+ |
|
||||
| +---- 1| Vss /RES |40 -- 3k3 -+--- 52
|
||||
+--- 3k3 ----- 2| RDY ϕ2 |39
|
||||
| 3| ϕ1 /SO |38
|
||||
+--- 3k3 ----- 4| IRQ ϕ0 |37 -------- 53
|
||||
| 5| NC NC |36
|
||||
| +---- 1| VPB /RES |40 -- 3k3 -+--- RST BTN
|
||||
+--- 3k3 ----- 2| RDY PHI2O |39
|
||||
| 3| PHI1O SOB |38
|
||||
+--- 3k3 ----- 4| IRQ PHI2 |37 -------- 52
|
||||
| 5| MLB BE |36
|
||||
+--- 3k3 ----- 6| /NMI NC |35
|
||||
| 7| SYNC R/W |34 -------- 51
|
||||
+------------- 8| Vcc D0 |33 -------- 49
|
||||
22 --------- 9| A0 D1 |32 -------- 48
|
||||
23 --------- 10| A1 D2 |31 -------- 47
|
||||
24 --------- 11| A2 D3 |30 -------- 46
|
||||
25 --------- 12| A3 D4 |29 -------- 45
|
||||
26 --------- 13| A4 D5 |28 -------- 44
|
||||
27 --------- 14| A5 D6 |27 -------- 43
|
||||
28 --------- 15| A6 D7 |26 -------- 42
|
||||
29 --------- 16| A7 A15 |25 -------- 30
|
||||
37 --------- 17| A8 A14 |24 -------- 31
|
||||
36 --------- 18| A9 A13 |23 -------- 32
|
||||
35 --------- 19| A10 A12 |22 -------- 33
|
||||
34 --------- 20| A11 Vss |21 ---+
|
||||
| 7| SYNC R/W |34 -------- 53
|
||||
+------------- 8| VDD D0 |33 -------- 30
|
||||
44 --------- 9| A0 D1 |32 -------- 31
|
||||
45 --------- 10| A1 D2 |31 -------- 32
|
||||
2 --------- 11| A2 D3 |30 -------- 33
|
||||
3 --------- 12| A3 D4 |29 -------- 34
|
||||
4 --------- 13| A4 D5 |28 -------- 35
|
||||
5 --------- 14| A5 D6 |27 -------- 36
|
||||
6 --------- 15| A6 D7 |26 -------- 37
|
||||
7 --------- 16| A7 A15 |25 -------- 47
|
||||
8 --------- 17| A8 A14 |24 -------- 46
|
||||
9 --------- 18| A9 A13 |23 -------- 13
|
||||
10 --------- 19| A10 A12 |22 -------- 12
|
||||
11 --------- 20| A11 VSS |21 ---+
|
||||
+--------------+ |
|
||||
GND
|
||||
|
|
59
src/main.cpp
59
src/main.cpp
|
@ -12,8 +12,6 @@ const int CLOCK_DELAY = 4; // HIGH / LOW CLOCK STATE DELAY
|
|||
|
||||
const char SERIAL_BS = 0x08;
|
||||
|
||||
const int NUM_ADDR_PINS = 16;
|
||||
const int NUM_DATA_PINS = 8;
|
||||
const int ADDRESS_PINS[] = {44,45,2,3,4,5,6,7,8,9,10,11,12,13,46,47}; // TO ADDRESS PIN 1-15 6502
|
||||
const int DATA_PINS[] = {30,31,32,33,34,35,36,37}; // TO DATA BUS PIN 0-7 6502
|
||||
|
||||
|
@ -34,6 +32,7 @@ const unsigned int IN = 0x200; // Input buffer ($0200,$027F)
|
|||
const int RAM_BANK_1_SIZE = 4096;
|
||||
const int RAM_BANK_2_SIZE = 4096;
|
||||
unsigned char RAM_BANK_1[RAM_BANK_1_SIZE];
|
||||
unsigned char RAM_BANK_2[RAM_BANK_2_SIZE];
|
||||
|
||||
// PIA MAPPING 6821
|
||||
const unsigned int PIA_ADDR = 0xD000; // PIA 6821 ADDR BASE SPACE
|
||||
|
@ -58,34 +57,33 @@ unsigned int pre_address; // Current address (from 6502)
|
|||
unsigned char pre_bus_data; // Data Bus value (from 6502)
|
||||
int pre_rw_state; // Current R/W state (from 6502)
|
||||
|
||||
|
||||
void setupAddressPins() {
|
||||
for (int i = 0; i < NUM_ADDR_PINS; ++i) {
|
||||
for (int i = 0; i < 16; ++i) {
|
||||
pinMode(ADDRESS_PINS[i], INPUT);
|
||||
}
|
||||
}
|
||||
|
||||
void setBusMode(int mode) {
|
||||
for (int i = 0; i < NUM_DATA_PINS; ++i) {
|
||||
for (int i = 0; i < 8; ++i) {
|
||||
pinMode(DATA_PINS[i], mode);
|
||||
}
|
||||
}
|
||||
|
||||
void readAddress() {
|
||||
address = 0;
|
||||
for (int i = 0; i < NUM_ADDR_PINS; ++i)
|
||||
for (int i = 0; i < 16; ++i)
|
||||
{
|
||||
address = address << 1;
|
||||
address += (digitalRead(ADDRESS_PINS[NUM_ADDR_PINS-i-1]) == HIGH)?1:0;
|
||||
address += (digitalRead(ADDRESS_PINS[16-i-1]) == HIGH)?1:0;
|
||||
}
|
||||
}
|
||||
|
||||
void readData() {
|
||||
bus_data = 0;
|
||||
for (int i = 0; i < NUM_DATA_PINS; ++i)
|
||||
for (int i = 0; i < 8; ++i)
|
||||
{
|
||||
bus_data = bus_data << 1;
|
||||
bus_data += (digitalRead(DATA_PINS[NUM_DATA_PINS-i-1]) == HIGH)?1:0;
|
||||
bus_data += (digitalRead(DATA_PINS[8-i-1]) == HIGH)?1:0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,19 +92,13 @@ void handleRWState() {
|
|||
|
||||
if (rw_state != tmp_rw_state) {
|
||||
rw_state=tmp_rw_state;
|
||||
if (rw_state) {
|
||||
// State HIGH - WRITE TO 6502 Data Bus
|
||||
setBusMode(OUTPUT);
|
||||
} else {
|
||||
// State LOW - READ FROM 6502 Data Bus
|
||||
setBusMode(INPUT);
|
||||
}
|
||||
rw_state ? setBusMode(OUTPUT) : setBusMode(INPUT);
|
||||
}
|
||||
}
|
||||
|
||||
// Send a byte to the 6502 DATA BUS
|
||||
void byteToDataBus(unsigned char data) {
|
||||
for (int i = 0; i < NUM_DATA_PINS; i++) {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
digitalWrite(DATA_PINS[i], CHECK_BIT(data, i));
|
||||
}
|
||||
}
|
||||
|
@ -156,7 +148,6 @@ void readFromDataBus() {
|
|||
RAM_BANK_1[address-RAM_BANK1_ADDR]=bus_data;
|
||||
break;
|
||||
case 0xE:
|
||||
//RAM_BANK_2[address-RAM_BANK2_ADDR]=bus_data;
|
||||
RAM_BANK_2[address-RAM_BANK2_ADDR]=bus_data;
|
||||
break;
|
||||
case 0xD:
|
||||
|
@ -189,12 +180,12 @@ unsigned char PIARead() {
|
|||
break;
|
||||
default:
|
||||
val=0;
|
||||
break;
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
// WRITE FROM DATA BUS A BYTE FROM RELATED ADDRESS
|
||||
void writeToDataBus() {
|
||||
unsigned char val=0;
|
||||
|
||||
|
@ -215,7 +206,6 @@ void writeToDataBus() {
|
|||
val=0;
|
||||
break;
|
||||
}
|
||||
|
||||
byteToDataBus(val);
|
||||
}
|
||||
|
||||
|
@ -229,10 +219,6 @@ void handleKeyboard() {
|
|||
// Just ignore
|
||||
return;
|
||||
break;
|
||||
case 0xD:
|
||||
// CR
|
||||
tempKBD = 0x0D;
|
||||
break;
|
||||
case 0x8:
|
||||
case 0x7F:
|
||||
// BS
|
||||
|
@ -247,13 +233,22 @@ void handleKeyboard() {
|
|||
}
|
||||
}
|
||||
|
||||
void autload() {
|
||||
unsigned int adddr = AUTLOAD[1] | AUTLOAD[0] << 8;
|
||||
Serial.print("AUTOLOAD AT: ");
|
||||
Serial.println(adddr, HEX);
|
||||
void loadBASIC() {
|
||||
// LOAD BASIC in E000
|
||||
Serial.println("BASIC LOADED");
|
||||
for (unsigned int i = 0; i < sizeof(BASIC) ; i++) {
|
||||
RAM_BANK_2[i] = BASIC[i];
|
||||
}
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i <= sizeof(AUTLOAD)-2 ; i++) {
|
||||
RAM_BANK_1[adddr+i] = AUTLOAD[i+2];
|
||||
void loadPROG() {
|
||||
// LOAD A PROG
|
||||
unsigned int prg_addr = AUTLOAD[1] | AUTLOAD[0] << 8;
|
||||
Serial.print("PROGRAM AT: ");
|
||||
Serial.println(prg_addr, HEX);
|
||||
|
||||
for (unsigned int i = 0; i < sizeof(AUTLOAD)-2 ; i++) {
|
||||
RAM_BANK_1[prg_addr+i] = AUTLOAD[i+2];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -279,10 +274,10 @@ void setup() {
|
|||
Serial.print(sizeof(RAM_BANK_2));
|
||||
Serial.println(" BYTE");
|
||||
|
||||
autload();
|
||||
loadBASIC();
|
||||
loadPROG();
|
||||
|
||||
Serial.println("----------------------------");
|
||||
|
||||
}
|
||||
|
||||
void handleClock() {
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue