mirror of https://github.com/wwarthen/RomWBW.git
13 changed files with 8248 additions and 0 deletions
@ -0,0 +1,32 @@ |
|||
# Makefile 1/31/2013 dwg -
|
|||
|
|||
TASM := ../XSource/bin/TASM |
|||
TASMTABS := . |
|||
export TASMTABS |
|||
|
|||
ASMOPT80 := -t$(CPU) -g3 |
|||
ASMOPT85 := -t85 -g3 |
|||
|
|||
ASM80 := $(TASM) $(ASMOPT80) |
|||
ASM85 := $(TASM) $(ASMOPT85) |
|||
ASMIMG := $(TASM) $(ASMOPT80) -b -fE5 |
|||
|
|||
all: zapple.bin cpm.bin bios.bin |
|||
|
|||
tasm80.tab: bin/TASM80.TAB |
|||
cp bin/TASM80.TAB tasm80.tab |
|||
|
|||
tasm85.tab: bin/TASM85.TAB |
|||
cp bin/TASM85.TAB tasm85.tab |
|||
|
|||
cpm.bin: cpm22.asm |
|||
$(ASMIMG) $< $@ |
|||
|
|||
bios.bin: bios.asm s100iobd.inc |
|||
$(ASMIMG) bios.asm $@ |
|||
|
|||
zapple.bin: zapple.asm zapple.z80 |
|||
$(ASMIMG) zapple.asm $@ |
|||
|
|||
clean: |
|||
rm -f *.lst *.bin |
|||
File diff suppressed because it is too large
@ -0,0 +1,77 @@ |
|||
.page |
|||
;******************************************************** |
|||
; These are I/O functions for the CCS 2710 four-port |
|||
; serial I/O board. |
|||
; |
|||
; Bob Applegate, 02/16/2008 |
|||
; |
|||
SIObase .equ 0E0H |
|||
; |
|||
SIODATA .equ SIObase |
|||
SIOBAUDL .equ SIObase ;also used for baud rate |
|||
SIOINTEN .equ SIObase+1 |
|||
SIOBAUDH .equ SIObase+1 ;ditto |
|||
SIOIDENT .equ SIObase+2 |
|||
SIOLCTRL .equ SIObase+3 |
|||
SIOMDMCT .equ SIObase+4 |
|||
SIOLSTAT .equ SIObase+5 |
|||
SIOMDMST .equ SIObase+6 |
|||
BAUD03 .equ 0180H ;divisor for 300 baud |
|||
BAUD12 .equ 060H ;1200 baud |
|||
BAUD_2400 .equ 030h ;2400 baud |
|||
BAUD96 .equ 00CH ;9600 baud |
|||
DATRDY .equ 01H ;rec'd data ready |
|||
TXMTY .equ 20H ;transmitter holding reg empty |
|||
HSMSK .equ 20H |
|||
|
|||
BAUD_RATE .equ BAUD_2400 |
|||
|
|||
; |
|||
; This function initializes the main console port for the |
|||
; default baud rate. |
|||
; |
|||
initser: ld a,0fH |
|||
out (SIOMDMCT),a |
|||
ld a,083H ;enable divisor latch access |
|||
out (SIOLCTRL),a |
|||
ld a,BAUD_RATE / 256 ;get hi byte |
|||
out (SIOBAUDH),a |
|||
ld a,BAUD_RATE % 256 ;get low byte |
|||
out (SIOBAUDL),a |
|||
ld a,03H ;8 data bits, one stop bit, no parity |
|||
out (SIOLCTRL),a |
|||
xor a ;clear acc |
|||
out (SIOINTEN),a ;disable ints |
|||
out (SIOLSTAT),a ;clear status |
|||
in a,(SIODATA) ;clear out any garbage in rec'd data reg |
|||
ret |
|||
; |
|||
; TTY output of character in C. Modifies A. |
|||
; |
|||
ttyout: IN A,(SIOLSTAT) ;was A,TTS, read status port |
|||
AND TXMTY ;check buffer empty bit |
|||
JR Z,ttyout ;branch if not empty |
|||
LD A,C |
|||
OUT (SIODATA),A ;was TTO,A, send out character |
|||
RET ;thassit |
|||
; |
|||
; Check to see if a character is ready to be read from the TTY. |
|||
; Returns TRUE (0ffh) in A is there is a character waiting, or |
|||
; FALSE (0) if there is nothing. |
|||
; |
|||
ttystat: IN A,(SIOLSTAT) ;was A,TTS |
|||
AND DATRDY |
|||
LD A,TRUE ;was FALSE |
|||
RET NZ |
|||
CPL |
|||
RET |
|||
; |
|||
; This gets the next character from the TTY and returns it in A. |
|||
; This will block if there is nothing waiting. |
|||
; |
|||
ttyin: IN A,(SIOLSTAT) ;read status reg |
|||
AND DATRDY ;look for data ready |
|||
JR Z,ttyin ;wait for char |
|||
IN a,(SIODATA) ;read character |
|||
RET |
|||
.page |
|||
@ -0,0 +1,71 @@ |
|||
#!/usr/bin/python |
|||
# Written by Douglas Goodall 17:25 Wed, Jan 30, 2013 |
|||
# load cpm.bin and bios.bin then jump |
|||
|
|||
import sys |
|||
import os |
|||
import serial |
|||
|
|||
# passing in a string either "12" or "0x12" |
|||
# return value is string of hex digits only (no 0x) |
|||
def safebyte(parm): |
|||
xyz = parm |
|||
myord = ord(xyz) |
|||
hexdata = hex(myord) |
|||
newstr = hexdata |
|||
if (hexdata[0] == '0'): |
|||
if(hexdata[1] == 'x'): |
|||
newstr = hexdata[2] |
|||
if(len(hexdata)>3): |
|||
newstr = newstr + hexdata[3] |
|||
return newstr |
|||
|
|||
# passing in a string either "1234" of "0x1234" |
|||
# return value is string of hex digits only (1234) (no 0x) |
|||
def safeword(parm): |
|||
xyz = parm |
|||
myint = int(xyz) |
|||
hexdata = hex(myint) |
|||
newstr = hexdata |
|||
if (hexdata[0] == '0'): |
|||
if(hexdata[1] == 'x'): |
|||
newstr = hexdata[2] |
|||
if(len(hexdata)>3): |
|||
newstr = newstr + hexdata[3] |
|||
if(len(hexdata)>4): |
|||
newstr = newstr + hexdata[4] |
|||
if(len(hexdata)>5): |
|||
newstr = newstr + hexdata[5] |
|||
return newstr |
|||
|
|||
def loadngo(filename): |
|||
statinfo = os.stat(filename) |
|||
filelen = statinfo.st_size |
|||
infile = open(filename,'rb') |
|||
filedata = infile.read() |
|||
infile.close() |
|||
outfile = open("cpm.trans","w") |
|||
|
|||
# ser = serial.Serial('/dev/cu.PL2303-0000201D', 19200, timeout=10) |
|||
# ser.write("\n\n") |
|||
outfile.write("sa400\n") |
|||
# print ser.read(12); |
|||
for x in range(1,filelen): |
|||
outfile.write(safebyte(filedata[x-1])) |
|||
outfile.write(" ") |
|||
outfile.write("\n") |
|||
outfile.close() |
|||
# print ser.read(12) |
|||
# ser.close() |
|||
|
|||
print "*******************************************************************" |
|||
print "loadcpm.py 1/30/2013 dwg - load&go S-100 CP/M using master-yoda ROM" |
|||
print "*******************************************************************" |
|||
#loadngo("cpm.bin") |
|||
ser = serial.Serial('/dev/cu.PL2303-0000201D', 19200, timeout=1) |
|||
ser.read(128) |
|||
ser.read(128) |
|||
ser.write("\n") |
|||
ser.close() |
|||
loadngo("cpm.bin") |
|||
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
@ -0,0 +1,39 @@ |
|||
;******************************************************** |
|||
; This file contains bits of information that are common |
|||
; between the CCP, BDOS and BIOS. Since the CCP and |
|||
; BDOS are built as one unit and the BIOS as another, it |
|||
; is handy to have common things in a common file rather |
|||
; that constantly needing to keep things in sync between |
|||
; two different files. |
|||
; |
|||
; 02/16/2013 - Bob Applegate |
|||
|
|||
|
|||
; |
|||
; This is the TOTAL RAM in the system. Ie, starts at 64 |
|||
; but then gets decreased due to ROM monitors at top of |
|||
; memory. This can be set artificially low to allow |
|||
; more room for BIOS debugging code. |
|||
; |
|||
; This is the amount of contiguous RAM from 0000. |
|||
; |
|||
RAMSIZE EQU 48 ;expressed in K |
|||
|
|||
; |
|||
; Low memory locations |
|||
; |
|||
IOBYTE EQU 3 ;i/o definition byte. |
|||
TDRIVE EQU 4 ;current drive name and user number. |
|||
ENTRY EQU 5 ;entry point for the cp/m bdos. |
|||
|
|||
|
|||
|
|||
CCPSIZE EQU 0800H ;I hate hard-coding things! |
|||
BDOSSIZE EQU 0E00H |
|||
|
|||
; |
|||
; Where CP/M things are located |
|||
; |
|||
CCPBASE equ (RAMSIZE-7)*1024 |
|||
BDOSBASE equ (CCPBASE+CCPSIZE) |
|||
BIOSBASE equ (BDOSBASE+BDOSSIZE) |
|||
@ -0,0 +1,69 @@ |
|||
#!/usr/bin/python |
|||
# Written by Douglas Goodall 17:25 Wed, Jan 30, 2013 |
|||
# load cpm.bin and bios.bin then jump |
|||
|
|||
import sys |
|||
import os |
|||
import serial |
|||
|
|||
# passing in a string either "12" or "0x12" |
|||
# return value is string of hex digits only (no 0x) |
|||
def safebyte(parm): |
|||
xyz = parm |
|||
myord = ord(xyz) |
|||
hexdata = hex(myord) |
|||
newstr = hexdata |
|||
if (hexdata[0] == '0'): |
|||
if(hexdata[1] == 'x'): |
|||
newstr = hexdata[2] |
|||
if(len(hexdata)>3): |
|||
newstr = newstr + hexdata[3] |
|||
return newstr |
|||
|
|||
# passing in a string either "1234" of "0x1234" |
|||
# return value is string of hex digits only (1234) (no 0x) |
|||
def safeword(parm): |
|||
xyz = parm |
|||
myint = int(xyz) |
|||
hexdata = hex(myint) |
|||
newstr = hexdata |
|||
if (hexdata[0] == '0'): |
|||
if(hexdata[1] == 'x'): |
|||
newstr = hexdata[2] |
|||
if(len(hexdata)>3): |
|||
newstr = newstr + hexdata[3] |
|||
if(len(hexdata)>4): |
|||
newstr = newstr + hexdata[4] |
|||
if(len(hexdata)>5): |
|||
newstr = newstr + hexdata[5] |
|||
return newstr |
|||
|
|||
def loadngo(filename): |
|||
statinfo = os.stat(filename) |
|||
filelen = statinfo.st_size |
|||
infile = open(filename,'rb') |
|||
filedata = infile.read() |
|||
infile.close() |
|||
ser = serial.Serial('/dev/cu.PL2303-0000201D', 19200, timeout=10) |
|||
ser.write("\n\n") |
|||
ser.write("sa400\n") |
|||
print ser.read(12); |
|||
for x in range(1,filelen): |
|||
ser.write(safebyte(filedata[x-1])) |
|||
ser.write(" ") |
|||
print ser.read(12) |
|||
ser.write("\n") |
|||
print ser.read(12) |
|||
ser.close() |
|||
|
|||
print "*******************************************************************" |
|||
print "loadcpm.py 1/30/2013 dwg - load&go S-100 CP/M using master-yoda ROM" |
|||
print "*******************************************************************" |
|||
#loadngo("cpm.bin") |
|||
ser = serial.Serial('/dev/cu.PL2303-0000201D', 19200, timeout=1) |
|||
ser.read(128) |
|||
ser.read(128) |
|||
ser.write("\n") |
|||
ser.close() |
|||
loadngo("cpm.bin") |
|||
|
|||
@ -0,0 +1,77 @@ |
|||
.page |
|||
;******************************************************** |
|||
; These are I/O functions for the CCS 2710 four-port |
|||
; serial I/O board. |
|||
; |
|||
; Bob Applegate, 02/16/2008 |
|||
; |
|||
SIObase .equ 0E0H |
|||
; |
|||
SIODATA .equ SIObase |
|||
SIOBAUDL .equ SIObase ;also used for baud rate |
|||
SIOINTEN .equ SIObase+1 |
|||
SIOBAUDH .equ SIObase+1 ;ditto |
|||
SIOIDENT .equ SIObase+2 |
|||
SIOLCTRL .equ SIObase+3 |
|||
SIOMDMCT .equ SIObase+4 |
|||
SIOLSTAT .equ SIObase+5 |
|||
SIOMDMST .equ SIObase+6 |
|||
BAUD03 .equ 0180H ;divisor for 300 baud |
|||
BAUD12 .equ 060H ;1200 baud |
|||
BAUD_2400 .equ 030h ;2400 baud |
|||
BAUD96 .equ 00CH ;9600 baud |
|||
DATRDY .equ 01H ;rec'd data ready |
|||
TXMTY .equ 20H ;transmitter holding reg empty |
|||
HSMSK .equ 20H |
|||
|
|||
BAUD_RATE .equ BAUD_2400 |
|||
|
|||
; |
|||
; This function initializes the main console port for the |
|||
; default baud rate. |
|||
; |
|||
initser: ld a,0fH |
|||
out (SIOMDMCT),a |
|||
ld a,083H ;enable divisor latch access |
|||
out (SIOLCTRL),a |
|||
ld a,BAUD_RATE / 256 ;get hi byte |
|||
out (SIOBAUDH),a |
|||
ld a,BAUD_RATE % 256 ;get low byte |
|||
out (SIOBAUDL),a |
|||
ld a,03H ;8 data bits, one stop bit, no parity |
|||
out (SIOLCTRL),a |
|||
xor a ;clear acc |
|||
out (SIOINTEN),a ;disable ints |
|||
out (SIOLSTAT),a ;clear status |
|||
in a,(SIODATA) ;clear out any garbage in rec'd data reg |
|||
ret |
|||
; |
|||
; TTY output of character in C. Modifies A. |
|||
; |
|||
ttyout: IN A,(SIOLSTAT) ;was A,TTS, read status port |
|||
AND TXMTY ;check buffer empty bit |
|||
JR Z,ttyout ;branch if not empty |
|||
LD A,C |
|||
OUT (SIODATA),A ;was TTO,A, send out character |
|||
RET ;thassit |
|||
; |
|||
; Check to see if a character is ready to be read from the TTY. |
|||
; Returns TRUE (0ffh) in A is there is a character waiting, or |
|||
; FALSE (0) if there is nothing. |
|||
; |
|||
ttystat: IN A,(SIOLSTAT) ;was A,TTS |
|||
AND DATRDY |
|||
LD A,TRUE ;was FALSE |
|||
RET NZ |
|||
CPL |
|||
RET |
|||
; |
|||
; This gets the next character from the TTY and returns it in A. |
|||
; This will block if there is nothing waiting. |
|||
; |
|||
ttyin: IN A,(SIOLSTAT) ;read status reg |
|||
AND DATRDY ;look for data ready |
|||
JR Z,ttyin ;wait for char |
|||
IN a,(SIODATA) ;read character |
|||
RET |
|||
.page |
|||
@ -0,0 +1,19 @@ |
|||
; |
|||
; To make it easier to port code from other assemblers, |
|||
; this maps some common psuedo-ops into TASM versions. |
|||
; |
|||
#define EQU .equ |
|||
#define equ .equ |
|||
#define END .end |
|||
#define end .end |
|||
#define DEFB .db |
|||
#define DB .db |
|||
#define db .db |
|||
#define DEFW .dw |
|||
#define DW .dw |
|||
#define dw .dw |
|||
#define DS .ds |
|||
#define ds .ds |
|||
#define ORG .org |
|||
#define org .org |
|||
#define TEXT .text |
|||
@ -0,0 +1,594 @@ |
|||
"TASM Z80 Assembler. " |
|||
/**************************************************************************** |
|||
/* $Id: tasm80.tab 1.2 1998/02/28 14:31:22 toma Exp $ |
|||
/**************************************************************************** |
|||
/* This is the instruction set definition table |
|||
/* for the Z80 version of TASM. |
|||
/* Thomas N. Anderson, Speech Technology Incorporated |
|||
/* This table authored and submitted by Carl A. Wall, VE3APY. |
|||
/* |
|||
/* Class bits assigned as follows: |
|||
/* Bit-0 = Z80 (base instruction set) |
|||
/* Bit-1 = HD64180 (extended instructions) |
|||
/* See TASM manual for info on table structure. |
|||
/* |
|||
/*INSTR ARGS OP BYTES RULE CLASS SHIFT OR */ |
|||
/*-------------------------------------------*/ |
|||
|
|||
ADC A,(HL) 8E 1 NOP 1 |
|||
ADC A,(IX*) 8EDD 3 ZIX 1 |
|||
ADC A,(IY*) 8EFD 3 ZIX 1 |
|||
ADC A,A 8F 1 NOP 1 |
|||
ADC A,B 88 1 NOP 1 |
|||
ADC A,C 89 1 NOP 1 |
|||
ADC A,D 8A 1 NOP 1 |
|||
ADC A,E 8B 1 NOP 1 |
|||
ADC A,H 8C 1 NOP 1 |
|||
ADC A,L 8D 1 NOP 1 |
|||
ADC A,* CE 2 NOP 1 |
|||
ADC HL,BC 4AED 2 NOP 1 |
|||
ADC HL,DE 5AED 2 NOP 1 |
|||
ADC HL,HL 6AED 2 NOP 1 |
|||
ADC HL,SP 7AED 2 NOP 1 |
|||
|
|||
ADD A,(HL) 86 1 NOP 1 |
|||
ADD A,(IX*) 86DD 3 ZIX 1 |
|||
ADD A,(IY*) 86FD 3 ZIX 1 |
|||
ADD A,A 87 1 NOP 1 |
|||
ADD A,B 80 1 NOP 1 |
|||
ADD A,C 81 1 NOP 1 |
|||
ADD A,D 82 1 NOP 1 |
|||
ADD A,E 83 1 NOP 1 |
|||
ADD A,H 84 1 NOP 1 |
|||
ADD A,L 85 1 NOP 1 |
|||
ADD A,* C6 2 NOP 1 |
|||
ADD HL,BC 09 1 NOP 1 |
|||
ADD HL,DE 19 1 NOP 1 |
|||
ADD HL,HL 29 1 NOP 1 |
|||
ADD HL,SP 39 1 NOP 1 |
|||
ADD IX,BC 09DD 2 NOP 1 |
|||
ADD IX,DE 19DD 2 NOP 1 |
|||
ADD IX,IX 29DD 2 NOP 1 |
|||
ADD IX,SP 39DD 2 NOP 1 |
|||
ADD IY,BC 09FD 2 NOP 1 |
|||
ADD IY,DE 19FD 2 NOP 1 |
|||
ADD IY,IY 29FD 2 NOP 1 |
|||
ADD IY,SP 39FD 2 NOP 1 |
|||
|
|||
AND (HL) A6 1 NOP 1 |
|||
AND (IX*) A6DD 3 ZIX 1 |
|||
AND (IY*) A6FD 3 ZIX 1 |
|||
AND A A7 1 NOP 1 |
|||
AND B A0 1 NOP 1 |
|||
AND C A1 1 NOP 1 |
|||
AND D A2 1 NOP 1 |
|||
AND E A3 1 NOP 1 |
|||
AND H A4 1 NOP 1 |
|||
AND L A5 1 NOP 1 |
|||
AND * E6 2 NOP 1 |
|||
|
|||
BIT *,(HL) 46CB 2 ZBIT 1 |
|||
BIT *,(IX*) CBDD 4 ZBIT 1 0 4600 |
|||
BIT *,(IY*) CBFD 4 ZBIT 1 0 4600 |
|||
BIT *,A 47CB 2 ZBIT 1 |
|||
BIT *,B 40CB 2 ZBIT 1 |
|||
BIT *,C 41CB 2 ZBIT 1 |
|||
BIT *,D 42CB 2 ZBIT 1 |
|||
BIT *,E 43CB 2 ZBIT 1 |
|||
BIT *,H 44CB 2 ZBIT 1 |
|||
BIT *,L 45CB 2 ZBIT 1 |
|||
|
|||
CALL C,* DC 3 NOP 1 |
|||
CALL M,* FC 3 NOP 1 |
|||
CALL NC,* D4 3 NOP 1 |
|||
CALL NZ,* C4 3 NOP 1 |
|||
CALL P,* F4 3 NOP 1 |
|||
CALL PE,* EC 3 NOP 1 |
|||
CALL PO,* E4 3 NOP 1 |
|||
CALL Z,* CC 3 NOP 1 |
|||
CALL * CD 3 NOP 1 |
|||
|
|||
CCF "" 3F 1 NOP 1 |
|||
|
|||
CP (HL) BE 1 NOP 1 |
|||
CP (IX*) BEDD 3 ZIX 1 |
|||
CP (IY*) BEFD 3 ZIX 1 |
|||
CP A BF 1 NOP 1 |
|||
CP B B8 1 NOP 1 |
|||
CP C B9 1 NOP 1 |
|||
CP D BA 1 NOP 1 |
|||
CP E BB 1 NOP 1 |
|||
CP H BC 1 NOP 1 |
|||
CP L BD 1 NOP 1 |
|||
CP * FE 2 NOP 1 |
|||
CPD "" A9ED 2 NOP 1 |
|||
CPDR "" B9ED 2 NOP 1 |
|||
CPIR "" B1ED 2 NOP 1 |
|||
CPI "" A1ED 2 NOP 1 |
|||
CPL "" 2F 1 NOP 1 |
|||
|
|||
DAA "" 27 1 NOP 1 |
|||
|
|||
DEC (HL) 35 1 NOP 1 |
|||
DEC (IX*) 35DD 3 ZIX 1 |
|||
DEC (IY*) 35FD 3 ZIX 1 |
|||
DEC A 3D 1 NOP 1 |
|||
DEC B 05 1 NOP 1 |
|||
DEC BC 0B 1 NOP 1 |
|||
DEC C 0D 1 NOP 1 |
|||
DEC D 15 1 NOP 1 |
|||
DEC DE 1B 1 NOP 1 |
|||
DEC E 1D 1 NOP 1 |
|||
DEC H 25 1 NOP 1 |
|||
DEC HL 2B 1 NOP 1 |
|||
DEC IX 2BDD 2 NOP 1 |
|||
DEC IY 2BFD 2 NOP 1 |
|||
DEC L 2D 1 NOP 1 |
|||
DEC SP 3B 1 NOP 1 |
|||
DI "" F3 1 NOP 1 |
|||
DJNZ * 10 2 R1 1 |
|||
|
|||
EI "" FB 1 NOP 1 |
|||
EX (SP),HL E3 1 NOP 1 |
|||
EX (SP),IX E3DD 2 NOP 1 |
|||
EX (SP),IY E3FD 2 NOP 1 |
|||
EX AF,AF' 08 1 NOP 1 |
|||
EX DE,HL EB 1 NOP 1 |
|||
EXX "" D9 1 NOP 1 |
|||
HALT "" 76 1 NOP 1 |
|||
|
|||
IM 0 46ED 2 NOP 1 |
|||
IM 1 56ED 2 NOP 1 |
|||
IM 2 5EED 2 NOP 1 |
|||
|
|||
/* Alternate form of above |
|||
IM0 46ED 2 NOP 1 |
|||
IM1 56ED 2 NOP 1 |
|||
IM2 5EED 2 NOP 1 |
|||
|
|||
IN A,(C) 78ED 2 NOP 1 |
|||
IN B,(C) 40ED 2 NOP 1 |
|||
IN C,(C) 48ED 2 NOP 1 |
|||
IN D,(C) 50ED 2 NOP 1 |
|||
IN E,(C) 58ED 2 NOP 1 |
|||
IN H,(C) 60ED 2 NOP 1 |
|||
IN L,(C) 68ED 2 NOP 1 |
|||
|
|||
IN A,(*) DB 2 NOP 1 |
|||
|
|||
IN0 A,(*) 38ED 3 NOP 2 |
|||
IN0 B,(*) 00ED 3 NOP 2 |
|||
IN0 C,(*) 08ED 3 NOP 2 |
|||
IN0 D,(*) 10ED 3 NOP 2 |
|||
IN0 E,(*) 18ED 3 NOP 2 |
|||
IN0 H,(*) 20ED 3 NOP 2 |
|||
IN0 L,(*) 28ED 3 NOP 2 |
|||
|
|||
INC (HL) 34 1 NOP 1 |
|||
INC (IX*) 34DD 3 ZIX 1 |
|||
INC (IY*) 34FD 3 ZIX 1 |
|||
INC A 3C 1 NOP 1 |
|||
INC B 04 1 NOP 1 |
|||
INC BC 03 1 NOP 1 |
|||
INC C 0C 1 NOP 1 |
|||
INC D 14 1 NOP 1 |
|||
INC DE 13 1 NOP 1 |
|||
INC E 1C 1 NOP 1 |
|||
INC H 24 1 NOP 1 |
|||
INC HL 23 1 NOP 1 |
|||
INC IX 23DD 2 NOP 1 |
|||
INC IY 23FD 2 NOP 1 |
|||
INC L 2C 1 NOP 1 |
|||
INC SP 33 1 NOP 1 |
|||
|
|||
|
|||
IND "" AAED 2 NOP 1 |
|||
INDR "" BAED 2 NOP 1 |
|||
INI "" A2ED 2 NOP 1 |
|||
INIR "" B2ED 2 NOP 1 |
|||
|
|||
JP (HL) E9 1 NOP 1 |
|||
JP (IX) E9DD 2 NOP 1 |
|||
JP (IY) E9FD 2 NOP 1 |
|||
JP C,* DA 3 NOP 1 |
|||
JP M,* FA 3 NOP 1 |
|||
JP NC,* D2 3 NOP 1 |
|||
JP NZ,* C2 3 NOP 1 |
|||
JP P,* F2 3 NOP 1 |
|||
JP PE,* EA 3 NOP 1 |
|||
JP PO,* E2 3 NOP 1 |
|||
JP Z,* CA 3 NOP 1 |
|||
JP * C3 3 NOP 1 |
|||
|
|||
JR C,* 38 2 R1 1 |
|||
JR NC,* 30 2 R1 1 |
|||
JR NZ,* 20 2 R1 1 |
|||
JR Z,* 28 2 R1 1 |
|||
JR * 18 2 R1 1 |
|||
|
|||
LD (BC),A 02 1 NOP 1 |
|||
LD (DE),A 12 1 NOP 1 |
|||
LD (HL),A 77 1 NOP 1 |
|||
LD (HL),B 70 1 NOP 1 |
|||
LD (HL),C 71 1 NOP 1 |
|||
LD (HL),D 72 1 NOP 1 |
|||
LD (HL),E 73 1 NOP 1 |
|||
LD (HL),H 74 1 NOP 1 |
|||
LD (HL),L 75 1 NOP 1 |
|||
LD (HL),* 36 2 NOP 1 |
|||
LD (IX*),A 77DD 3 ZIX 1 |
|||
LD (IX*),B 70DD 3 ZIX 1 |
|||
LD (IX*),C 71DD 3 ZIX 1 |
|||
LD (IX*),D 72DD 3 ZIX 1 |
|||
LD (IX*),E 73DD 3 ZIX 1 |
|||
LD (IX*),H 74DD 3 ZIX 1 |
|||
LD (IX*),L 75DD 3 ZIX 1 |
|||
LD (IX*),* 36DD 4 ZIX 1 |
|||
LD (IY*),A 77FD 3 ZIX 1 |
|||
LD (IY*),B 70FD 3 ZIX 1 |
|||
LD (IY*),C 71FD 3 ZIX 1 |
|||
LD (IY*),D 72FD 3 ZIX 1 |
|||
LD (IY*),E 73FD 3 ZIX 1 |
|||
LD (IY*),H 74FD 3 ZIX 1 |
|||
LD (IY*),L 75FD 3 ZIX 1 |
|||
LD (IY*),* 36FD 4 ZIX 1 |
|||
LD (*),A 32 3 NOP 1 |
|||
LD (*),BC 43ED 4 NOP 1 |
|||
LD (*),DE 53ED 4 NOP 1 |
|||
LD (*),HL 22 3 NOP 1 |
|||
LD (*),IX 22DD 4 NOP 1 |
|||
LD (*),IY 22FD 4 NOP 1 |
|||
LD (*),SP 73ED 4 NOP 1 |
|||
LD A,(BC) 0A 1 NOP 1 |
|||
LD A,(DE) 1A 1 NOP 1 |
|||
LD A,(HL) 7E 1 NOP 1 |
|||
LD A,(IX*) 7EDD 3 ZIX 1 |
|||
LD A,(IY*) 7EFD 3 ZIX 1 |
|||
LD A,A 7F 1 NOP 1 |
|||
LD A,B 78 1 NOP 1 |
|||
LD A,C 79 1 NOP 1 |
|||
LD A,D 7A 1 NOP 1 |
|||
LD A,E 7B 1 NOP 1 |
|||
LD A,H 7C 1 NOP 1 |
|||
LD A,I 57ED 2 NOP 1 |
|||
LD A,L 7D 1 NOP 1 |
|||
LD A,R 5FED 2 NOP 1 |
|||
LD A,(*) 3A 3 NOP 1 |
|||
LD A,* 3E 2 NOP 1 |
|||
LD B,(HL) 46 1 NOP 1 |
|||
LD B,(IX*) 46DD 3 ZIX 1 |
|||
LD B,(IY*) 46FD 3 ZIX 1 |
|||
LD B,A 47 1 NOP 1 |
|||
LD B,B 40 1 NOP 1 |
|||
LD B,C 41 1 NOP 1 |
|||
LD B,D 42 1 NOP 1 |
|||
LD B,E 43 1 NOP 1 |
|||
LD B,H 44 1 NOP 1 |
|||
LD B,L 45 1 NOP 1 |
|||
LD B,* 06 2 NOP 1 |
|||
LD BC,(*) 4BED 4 NOP 1 |
|||
LD BC,* 01 3 NOP 1 |
|||
LD C,(HL) 4E 1 NOP 1 |
|||
LD C,(IX*) 4EDD 3 ZIX 1 |
|||
LD C,(IY*) 4EFD 3 ZIX 1 |
|||
LD C,A 4F 1 NOP 1 |
|||
LD C,B 48 1 NOP 1 |
|||
LD C,C 49 1 NOP 1 |
|||
LD C,D 4A 1 NOP 1 |
|||
LD C,E 4B 1 NOP 1 |
|||
LD C,H 4C 1 NOP 1 |
|||
LD C,L 4D 1 NOP 1 |
|||
LD C,* 0E 2 NOP 1 |
|||
LD D,(HL) 56 1 NOP 1 |
|||
LD D,(IX*) 56DD 3 ZIX 1 |
|||
LD D,(IY*) 56FD 3 ZIX 1 |
|||
LD D,A 57 1 NOP 1 |
|||
LD D,B 50 1 NOP 1 |
|||
LD D,C 51 1 NOP 1 |
|||
LD D,D 52 1 NOP 1 |
|||
LD D,E 53 1 NOP 1 |
|||
LD D,H 54 1 NOP 1 |
|||
LD D,L 55 1 NOP 1 |
|||
LD D,* 16 2 NOP 1 |
|||
LD DE,(*) 5BED 4 NOP 1 |
|||
LD DE,* 11 3 NOP 1 |
|||
LD E,(HL) 5E 1 NOP 1 |
|||
LD E,(IX*) 5EDD 3 ZIX 1 |
|||
LD E,(IY*) 5EFD 3 ZIX 1 |
|||
LD E,A 5F 1 NOP 1 |
|||
LD E,B 58 1 NOP 1 |
|||
LD E,C 59 1 NOP 1 |
|||
LD E,D 5A 1 NOP 1 |
|||
LD E,E 5B 1 NOP 1 |
|||
LD E,H 5C 1 NOP 1 |
|||
LD E,L 5D 1 NOP 1 |
|||
LD E,* 1E 2 NOP 1 |
|||
LD H,(HL) 66 1 NOP 1 |
|||
LD H,(IX*) 66DD 3 ZIX 1 |
|||
LD H,(IY*) 66FD 3 ZIX 1 |
|||
LD H,A 67 1 NOP 1 |
|||
LD H,B 60 1 NOP 1 |
|||
LD H,C 61 1 NOP 1 |
|||
LD H,D 62 1 NOP 1 |
|||
LD H,E 63 1 NOP 1 |
|||
LD H,H 64 1 NOP 1 |
|||
LD H,L 65 1 NOP 1 |
|||
LD H,* 26 2 NOP 1 |
|||
LD HL,(*) 2A 3 NOP 1 |
|||
LD HL,* 21 3 NOP 1 |
|||
LD I,A 47ED 2 NOP 1 |
|||
LD IX,(*) 2ADD 4 NOP 1 |
|||
LD IX,* 21DD 4 NOP 1 |
|||
LD IY,(*) 2AFD 4 NOP 1 |
|||
LD IY,* 21FD 4 NOP 1 |
|||
LD L,(HL) 6E 1 NOP 1 |
|||
LD L,(IX*) 6EDD 3 ZIX 1 |
|||
LD L,(IY*) 6EFD 3 ZIX 1 |
|||
LD L,A 6F 1 NOP 1 |
|||
LD L,B 68 1 NOP 1 |
|||
LD L,C 69 1 NOP 1 |
|||
LD L,D 6A 1 NOP 1 |
|||
LD L,E 6B 1 NOP 1 |
|||
LD L,H 6C 1 NOP 1 |
|||
LD L,L 6D 1 NOP 1 |
|||
LD L,* 2E 2 NOP 1 |
|||
LD R,A 4FED 2 NOP 1 |
|||
LD SP,(*) 7BED 4 NOP 1 |
|||
LD SP,HL F9 1 NOP 1 |
|||
LD SP,IX F9DD 2 NOP 1 |
|||
LD SP,IY F9FD 2 NOP 1 |
|||
LD SP,* 31 3 NOP 1 |
|||
LDD "" A8ED 2 NOP 1 |
|||
LDDR "" B8ED 2 NOP 1 |
|||
LDI "" A0ED 2 NOP 1 |
|||
LDIR "" B0ED 2 NOP 1 |
|||
NEG "" 44ED 2 NOP 1 |
|||
NOP "" 00 1 NOP 1 |
|||
|
|||
MLT BC 4CED 2 NOP 2 |
|||
MLT DE 5CED 2 NOP 2 |
|||
MLT HL 6CED 2 NOP 2 |
|||
MLT SP 7CED 2 NOP 2 |
|||
|
|||
OR (HL) B6 1 NOP 1 |
|||
OR (IX*) B6DD 3 ZIX 1 |
|||
OR (IY*) B6FD 3 ZIX 1 |
|||
OR A B7 1 NOP 1 |
|||
OR B B0 1 NOP 1 |
|||
OR C B1 1 NOP 1 |
|||
OR D B2 1 NOP 1 |
|||
OR E B3 1 NOP 1 |
|||
OR H B4 1 NOP 1 |
|||
OR L B5 1 NOP 1 |
|||
OR * F6 2 NOP 1 |
|||
|
|||
OTDM "" 8BED 2 NOP 2 |
|||
OTDMR "" 9BED 2 NOP 2 |
|||
OTDR "" BBED 2 NOP 1 |
|||
OTIM "" 83ED 2 NOP 2 |
|||
OTIMR "" 93ED 2 NOP 2 |
|||
OTIR "" B3ED 2 NOP 1 |
|||
|
|||
OUT (C),A 79ED 2 NOP 1 |
|||
OUT (C),B 41ED 2 NOP 1 |
|||
OUT (C),C 49ED 2 NOP 1 |
|||
OUT (C),D 51ED 2 NOP 1 |
|||
OUT (C),E 59ED 2 NOP 1 |
|||
OUT (C),H 61ED 2 NOP 1 |
|||
OUT (C),L 69ED 2 NOP 1 |
|||
OUT (*),A D3 2 NOP 1 |
|||
|
|||
OUT0 (*),A 39ED 3 NOP 2 |
|||
OUT0 (*),B 01ED 3 NOP 2 |
|||
OUT0 (*),C 09ED 3 NOP 2 |
|||
OUT0 (*),D 11ED 3 NOP 2 |
|||
OUT0 (*),E 19ED 3 NOP 2 |
|||
OUT0 (*),H 21ED 3 NOP 2 |
|||
OUT0 (*),L 29ED 3 NOP 2 |
|||
|
|||
OUTD "" ABED 2 NOP 1 |
|||
OUTI "" A3ED 2 NOP 1 |
|||
|
|||
POP AF F1 1 NOP 1 |
|||
POP BC C1 1 NOP 1 |
|||
POP DE D1 1 NOP 1 |
|||
POP HL E1 1 NOP 1 |
|||
POP IX E1DD 2 NOP 1 |
|||
POP IY E1FD 2 NOP 1 |
|||
|
|||
PUSH AF F5 1 NOP 1 |
|||
PUSH BC C5 1 NOP 1 |
|||
PUSH DE D5 1 NOP 1 |
|||
PUSH HL E5 1 NOP 1 |
|||
PUSH IX E5DD 2 NOP 1 |
|||
PUSH IY E5FD 2 NOP 1 |
|||
|
|||
RES *,(HL) 86CB 2 ZBIT 1 |
|||
RES *,(IX*) CBDD 4 ZBIT 1 0 8600 |
|||
RES *,(IY*) CBFD 4 ZBIT 1 0 8600 |
|||
RES *,A 87CB 2 ZBIT 1 |
|||
RES *,B 80CB 2 ZBIT 1 |
|||
RES *,C 81CB 2 ZBIT 1 |
|||
RES *,D 82CB 2 ZBIT 1 |
|||
RES *,E 83CB 2 ZBIT 1 |
|||
RES *,H 84CB 2 ZBIT 1 |
|||
RES *,L 85CB 2 ZBIT 1 |
|||
|
|||
RET "" C9 1 NOP 1 |
|||
RET C D8 1 NOP 1 |
|||
RET M F8 1 NOP 1 |
|||
RET NC D0 1 NOP 1 |
|||
RET NZ C0 1 NOP 1 |
|||
RET P F0 1 NOP 1 |
|||
RET PE E8 1 NOP 1 |
|||
RET PO E0 1 NOP 1 |
|||
RET Z C8 1 NOP 1 |
|||
RETI "" 4DED 2 NOP 1 |
|||
RETN "" 45ED 2 NOP 1 |
|||
|
|||
RL (HL) 16CB 2 NOP 1 |
|||
RL (IX*) CBDD 4 ZIX 1 0 1600 |
|||
RL (IY*) CBFD 4 ZIX 1 0 1600 |
|||
RL A 17CB 2 NOP 1 |
|||
RL B 10CB 2 NOP 1 |
|||
RL C 11CB 2 NOP 1 |
|||
RL D 12CB 2 NOP 1 |
|||
RL E 13CB 2 NOP 1 |
|||
RL H 14CB 2 NOP 1 |
|||
RL L 15CB 2 NOP 1 |
|||
RLA "" 17 1 NOP 1 |
|||
|
|||
RLC (HL) 06CB 2 NOP 1 |
|||
RLC (IX*) CBDD 4 ZIX 1 0 0600 |
|||
RLC (IY*) CBFD 4 ZIX 1 0 0600 |
|||
RLC A 07CB 2 NOP 1 |
|||
RLC B 00CB 2 NOP 1 |
|||
RLC C 01CB 2 NOP 1 |
|||
RLC D 02CB 2 NOP 1 |
|||
RLC E 03CB 2 NOP 1 |
|||
RLC H 04CB 2 NOP 1 |
|||
RLC L 05CB 2 NOP 1 |
|||
RLCA "" 07 1 NOP 1 |
|||
RLD "" 6FED 2 NOP 1 |
|||
|
|||
RR (HL) 1ECB 2 NOP 1 |
|||
RR (IX*) CBDD 4 ZIX 1 0 1E00 |
|||
RR (IY*) CBFD 4 ZIX 1 0 1E00 |
|||
RR A 1FCB 2 NOP 1 |
|||
RR B 18CB 2 NOP 1 |
|||
RR C 19CB 2 NOP 1 |
|||
RR D 1ACB 2 NOP 1 |
|||
RR E 1BCB 2 NOP 1 |
|||
RR H 1CCB 2 NOP 1 |
|||
RR L 1DCB 2 NOP 1 |
|||
RRA "" 1F 1 NOP 1 |
|||
RRC (HL) 0ECB 2 NOP 1 |
|||
RRC (IX*) CBDD 4 ZIX 1 0 0E00 |
|||
RRC (IY*) CBFD 4 ZIX 1 0 0E00 |
|||
RRC A 0FCB 2 NOP 1 |
|||
RRC B 08CB 2 NOP 1 |
|||
RRC C 09CB 2 NOP 1 |
|||
RRC D 0ACB 2 NOP 1 |
|||
RRC E 0BCB 2 NOP 1 |
|||
RRC H 0CCB 2 NOP 1 |
|||
RRC L 0DCB 2 NOP 1 |
|||
RRCA "" 0F 1 NOP 1 |
|||
RRD "" 67ED 2 NOP 1 |
|||
|
|||
RST 00H C7 1 NOP 1 |
|||
RST 08H CF 1 NOP 1 |
|||
RST 10H D7 1 NOP 1 |
|||
RST 18H DF 1 NOP 1 |
|||
RST 20H E7 1 NOP 1 |
|||
RST 28H EF 1 NOP 1 |
|||
RST 30H F7 1 NOP 1 |
|||
RST 38H FF 1 NOP 1 |
|||
|
|||
/* Alternate form of above |
|||
RST 00 C7 1 NOP 1 |
|||
RST 08 CF 1 NOP 1 |
|||
RST 10 D7 1 NOP 1 |
|||
RST 18 DF 1 NOP 1 |
|||
RST 20 E7 1 NOP 1 |
|||
RST 28 EF 1 NOP 1 |
|||
RST 30 F7 1 NOP 1 |
|||
RST 38 FF 1 NOP 1 |
|||
|
|||
SBC A,(HL) 9E 1 NOP 1 |
|||
SBC A,(IX*) 9EDD 3 ZIX 1 |
|||
SBC A,(IY*) 9EFD 3 ZIX 1 |
|||
SBC A,A 9F 1 NOP 1 |
|||
SBC A,B 98 1 NOP 1 |
|||
SBC A,C 99 1 NOP 1 |
|||
SBC A,D 9A 1 NOP 1 |
|||
SBC A,E 9B 1 NOP 1 |
|||
SBC A,H 9C 1 NOP 1 |
|||
SBC A,L 9D 1 NOP 1 |
|||
SBC HL,BC 42ED 2 NOP 1 |
|||
SBC HL,DE 52ED 2 NOP 1 |
|||
SBC HL,HL 62ED 2 NOP 1 |
|||
SBC HL,SP 72ED 2 NOP 1 |
|||
SBC A,* DE 2 NOP 1 |
|||
SCF "" 37 1 NOP 1 |
|||
|
|||
SET *,(HL) C6CB 2 ZBIT 1 |
|||
SET *,(IX*) CBDD 4 ZBIT 1 0 C600 |
|||
SET *,(IY*) CBFD 4 ZBIT 1 0 C600 |
|||
SET *,A C7CB 2 ZBIT 1 |
|||
SET *,B C0CB 2 ZBIT 1 |
|||
SET *,C C1CB 2 ZBIT 1 |
|||
SET *,D C2CB 2 ZBIT 1 |
|||
SET *,E C3CB 2 ZBIT 1 |
|||
SET *,H C4CB 2 ZBIT 1 |
|||
SET *,L C5CB 2 ZBIT 1 |
|||
|
|||
SLA (HL) 26CB 2 NOP 1 |
|||
SLA (IX*) CBDD 4 ZIX 1 0 2600 |
|||
SLA (IY*) CBFD 4 ZIX 1 0 2600 |
|||
SLA A 27CB 2 NOP 1 |
|||
SLA B 20CB 2 NOP 1 |
|||
SLA C 21CB 2 NOP 1 |
|||
SLA D 22CB 2 NOP 1 |
|||
SLA E 23CB 2 NOP 1 |
|||
SLA H 24CB 2 NOP 1 |
|||
SLA L 25CB 2 NOP 1 |
|||
|
|||
SLP "" 76ED 2 NOP 2 |
|||
|
|||
SRA (HL) 2ECB 2 NOP 1 |
|||
SRA (IX*) CBDD 4 ZIX 1 0 2E00 |
|||
SRA (IY*) CBFD 4 ZIX 1 0 2E00 |
|||
SRA A 2FCB 2 NOP 1 |
|||
SRA B 28CB 2 NOP 1 |
|||
SRA C 29CB 2 NOP 1 |
|||
SRA D 2ACB 2 NOP 1 |
|||
SRA E 2BCB 2 NOP 1 |
|||
SRA H 2CCB 2 NOP 1 |
|||
SRA L 2DCB 2 NOP 1 |
|||
|
|||
SRL (HL) 3ECB 2 NOP 1 |
|||
SRL (IX*) CBDD 4 ZIX 1 0 3E00 |
|||
SRL (IY*) CBFD 4 ZIX 1 0 3E00 |
|||
SRL A 3FCB 2 NOP 1 |
|||
SRL B 38CB 2 NOP 1 |
|||
SRL C 39CB 2 NOP 1 |
|||
SRL D 3ACB 2 NOP 1 |
|||
SRL E 3BCB 2 NOP 1 |
|||
SRL H 3CCB 2 NOP 1 |
|||
SRL L 3DCB 2 NOP 1 |
|||
|
|||
SUB (HL) 96 1 NOP 1 |
|||
SUB (IX*) 96DD 3 ZIX 1 |
|||
SUB (IY*) 96FD 3 ZIX 1 |
|||
SUB A 97 1 NOP 1 |
|||
SUB B 90 1 NOP 1 |
|||
SUB C 91 1 NOP 1 |
|||
SUB D 92 1 NOP 1 |
|||
SUB E 93 1 NOP 1 |
|||
SUB H 94 1 NOP 1 |
|||
SUB L 95 1 NOP 1 |
|||
SUB * D6 2 NOP 1 |
|||
|
|||
TST A 3CED 2 NOP 2 |
|||
TST B 04ED 2 NOP 2 |
|||
TST C 0CED 2 NOP 2 |
|||
TST D 14ED 2 NOP 2 |
|||
TST E 1CED 2 NOP 2 |
|||
TST H 24ED 2 NOP 2 |
|||
TST L 2CED 2 NOP 2 |
|||
TST (HL) 34ED 2 NOP 2 |
|||
TST * 64ED 3 NOP 2 |
|||
|
|||
TSTIO * 74ED 3 NOP 2 |
|||
|
|||
XOR (HL) AE 1 NOP 1 |
|||
XOR (IX*) AEDD 3 ZIX 1 |
|||
XOR (IY*) AEFD 3 ZIX 1 |
|||
XOR A AF 1 NOP 1 |
|||
XOR B A8 1 NOP 1 |
|||
XOR C A9 1 NOP 1 |
|||
XOR D AA 1 NOP 1 |
|||
XOR E AB 1 NOP 1 |
|||
XOR H AC 1 NOP 1 |
|||
XOR L AD 1 NOP 1 |
|||
XOR * EE 2 NOP 1 |
|||
@ -0,0 +1,80 @@ |
|||
; |
|||
;================================================================================================== |
|||
; WRAPPER FOR ZAPPLE MONITOR FOR N8VEM PROJECT |
|||
; WAYNE WARTHEN - 2012-11-26 |
|||
;================================================================================================== |
|||
; |
|||
; THE FOLLOWING MACROS DO THE HEAVY LIFTING TO MAKE THE ZAPPLE SOURCE |
|||
; COMPATIBLE WITH TASM |
|||
; |
|||
#DEFINE EQU .EQU |
|||
#DEFINE NAME \; |
|||
#DEFINE PAGE .PAGE |
|||
#DEFINE CSEG .CSEG |
|||
#DEFINE DSEG .DSEG |
|||
#DEFINE ORG .ORG |
|||
#DEFINE END .END |
|||
#DEFINE IF .IF |
|||
#DEFINE ELSE .ELSE |
|||
#DEFINE ENDIF .ENDIF |
|||
#DEFINE DEFB .DB |
|||
#DEFINE DB .DB |
|||
#DEFINE DEFW .DW |
|||
#DEFINE DW .DW |
|||
#DEFINE . _ |
|||
#DEFINE TITLE .TITLE |
|||
#DEFINE EXT \; |
|||
#DEFINE NOT ~ |
|||
; |
|||
#ADDINSTR IN A,* DB 2 NOP 1 |
|||
#ADDINSTR OUT *,A D3 2 NOP 1 |
|||
#ADDINSTR ADD A 87 1 NOP 1 |
|||
#ADDINSTR ADD D 82 1 NOP 1 |
|||
#ADDINSTR ADD * C6 2 NOP 1 |
|||
#ADDINSTR ADC A 8F 1 NOP 1 |
|||
#ADDINSTR ADC * CE 2 NOP 1 |
|||
#ADDINSTR SBC H 9C 1 NOP 1 |
|||
; |
|||
; |
|||
; |
|||
COLOC .EQU 0 |
|||
LNLOC .EQU 0 |
|||
LULOC .EQU 0 |
|||
PTPL .EQU 0 |
|||
PULOC .EQU 0 |
|||
CSLOC .EQU 0 |
|||
CILOC .EQU 0 |
|||
RPTPL .EQU 0 |
|||
RULOC .EQU 0 |
|||
; |
|||
; 16C550 SERIAL LINE UART |
|||
; |
|||
SIO_BASE .EQU 90H |
|||
SIO_RBR .EQU SIO_BASE + 0 ; DLAB=0: RCVR BUFFER REG (READ ONLY) |
|||
SIO_THR .EQU SIO_BASE + 0 ; DLAB=0: XMIT HOLDING REG (WRITE ONLY) |
|||
SIO_IER .EQU SIO_BASE + 1 ; DLAB=0: INT ENABLE REG |
|||
SIO_IIR .EQU SIO_BASE + 2 ; INT IDENT REGISTER (READ ONLY) |
|||
SIO_FCR .EQU SIO_BASE + 2 ; FIFO CONTROL REG (WRITE ONLY) |
|||
SIO_LCR .EQU SIO_BASE + 3 ; LINE CONTROL REG |
|||
SIO_MCR .EQU SIO_BASE + 4 ; MODEM CONTROL REG |
|||
SIO_LSR .EQU SIO_BASE + 5 ; LINE STATUS REG |
|||
SIO_MSR .EQU SIO_BASE + 6 ; MODEM STATUS REG |
|||
SIO_SCR .EQU SIO_BASE + 7 ; SCRATCH REGISTER |
|||
SIO_DLL .EQU SIO_BASE + 0 ; DLAB=1: DIVISOR LATCH (LS) |
|||
SIO_DLM .EQU SIO_BASE + 1 ; DLAB=1: DIVISOR LATCH (MS) |
|||
; |
|||
BAUDRATE .EQU 38400 |
|||
UART_DIV .EQU (1843200 / (16 * BAUDRATE)) |
|||
; |
|||
; |
|||
; |
|||
BASE .EQU $6000 |
|||
|
|||
; |
|||
; NOW INCLUDE THE MAIN SOURCE |
|||
; |
|||
#INCLUDE "zapple.z80" |
|||
; |
|||
.FILL $7000 - $ |
|||
; |
|||
.END |
|||
File diff suppressed because it is too large
Loading…
Reference in new issue