This commit is contained in:
Dennis Gunia
2022-12-16 20:45:34 +01:00
parent aabf475b67
commit bc1b9a399d
40 changed files with 13208 additions and 5377 deletions

View File

@@ -0,0 +1,51 @@
CS_BANK equ 0000000b
CS_DIP equ 0000001b
CS_CTC_0 equ 0000100b
CS_CTC_1 equ 0000101b
CS_CTC_2 equ 0000110b
CS_CTC_3 equ 0000111b
CS_SIO_A_D equ 0001000b
CS_SIO_A_C equ 0001001b
CS_SIO_B_D equ 0001010b
CS_SIO_B_C equ 0001011b
IO_RTC_SEC0 equ 00100000b
IO_RTC_SEC1 equ 00100001b
IO_RTC_MIN0 equ 00100010b
IO_RTC_MIN1 equ 00100011b
IO_RTC_HOUR equ 00100100b
IO_RTC_AMPM equ 00100101b
IO_RTC_DAY0 equ 00100110b
IO_RTC_DAY1 equ 00100111b
IO_RTC_MON0 equ 00101000b
IO_RTC_MON1 equ 00101001b
IO_RTC_YERR0 equ 00101010b
IO_RTC_YEAR1 equ 00101011b
IO_RTC_WEEK equ 00101100b
IO_RTC_CTR_D equ 00101101b
IO_RTC_CTR_E equ 00101110b
IO_RTC_CTR_F equ 00101111b
IO_AY0_ADDR equ 01000000b ;64
IO_AY0_DATA equ 01000001b ;65
IO_AY1_ADDR equ 01000010b ;66
IO_AY1_DATA equ 01000011b ;67
START_ROM equ 0x0000
IO_REG0 equ 0x20
VDP_REG equ 0x81
VDP_MEM equ 0x80
PROG_ROM_START equ 0x0100
PROG_MEM_START equ 04000h
IO_PIO_0_A_D equ 0x60
IO_PIO_0_A_C equ 0x61
IO_PIO_0_B_D equ 0x62
IO_PIO_0_B_C equ 0x63
IO_PIO_1_A_D equ 0x64 ;PS2
IO_PIO_1_A_C equ 0x65
IO_PIO_1_B_D equ 0x66
IO_PIO_1_B_C equ 0x67

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,115 @@
; Z8C Bootloader
; 2022 by Dennis Gunia
BTLDR_ENTRY:
;ld SP, 0ffffh ; set stack pointer
;Setup Serial Interface
LD A,01001111b ; External Trigger, Time Constant Follows
OUT (CS_CTC_0),A
IN A,(CS_DIP) ; Read BAUD from DIP-Switches
OUT (CS_CTC_0),A
LD A,00110000b ;write into WR0: error reset, select WR0
OUT (CS_SIO_A_C),A
LD a,018h ;write into WR0: channel reset
OUT (CS_SIO_A_C),A
LD a,004h ;write into WR0: select WR4
OUT (CS_SIO_A_C),A
;LD a,04h ;write into WR4: clkx1,1 stop bit, no parity
LD a,01000100b ;write into WR4: clkx16,1 stop bit, no parity
OUT (CS_SIO_A_C),A
LD a,005h ;write into WR0: select WR5
OUT (CS_SIO_A_C),A
LD a,11101000b ;DTR inactive, TX 8bit, BREAK off, TX on, RTS inactive
OUT (CS_SIO_A_C),A
LD a,01h ;write into WR0: select WR1
OUT (CS_SIO_A_C),A
LD a,00000100b ;no interrupt in CH B, special RX condition affects vect
OUT (CS_SIO_A_C),A
LD a,02h ;write into WR0: select WR2
OUT (CS_SIO_A_C),A
LD a,0h ;write into WR2: cmd line int vect (see int vec table)
;bits D3,D2,D1 are changed according to RX condition
OUT (CS_SIO_A_C),A
LD a,003h ;write into WR0: select WR3
OUT (CS_SIO_A_C),A
LD a,0C1h ;RX 8bit, auto enable off, RX on
OUT (CS_SIO_A_C),A
BTLDR_STARTUP_MSG:
LD HL,[S_BTLDR_STARTUP_MSG]
BTLDR_STARTUP_MSG_LOOP:
LD A,(HL)
OR A
JR Z, BTLDR_INPUT
CALL BTLDR_SUB_WRITEA
INC HL
JR BTLDR_STARTUP_MSG_LOOP
BTLDR_INPUT:
; Byte 1 & 2 = Length
CALL BTLDR_SUB_INPUT_READ
LD B, A
CALL BTLDR_SUB_INPUT_READ
LD C, A
; Byte 3 & 4 = Offset / Start address
CALL BTLDR_SUB_INPUT_READ
LD H, A
CALL BTLDR_SUB_INPUT_READ
LD L, A
; Byte 5+ = Payload
BTLDR_INPUT_1:
CALL BTLDR_SUB_INPUT_READ
LD (HL),A ;Store byte
DEC BC
LD A,H
OR A.L
JR Z, BTLDR_DONE
INC HL
JR BTLDR_INPUT_1
BTLDR_DONE:
RET
; Strings
S_BTLDR_STARTUP_MSG:
db "Z8C BTLDR.S V0.1 by Dennis Gunia [RDY] ",0
; Subroutines
BTLDR_SUB_WRITEA:
OUT (CS_SIO_A_D),A
BTLDR_SUB_WRITEA_WAIT:
XOR A
INC A
OUT (CS_SIO_A_C),A
IN A,(CS_SIO_A_C)
BIT 0,A
JR Z, BTLDR_SUB_WRITEA_WAIT
RET
BTLDR_SUB_RTS_OFF:
ld a,005h ;write into WR0: select WR5
out (CS_SIO_A_C),A
ld a,0E8h ;DTR active, TX 8bit, BREAK off, TX on, RTS inactive
out (CS_SIO_A_C),A
ret
BTLDR_SUB_RTS_ON:
ld a,005h ;write into WR0: select WR5
out (CS_SIO_A_C),A
ld a,0EAh ;DTR active, TX 8bit, BREAK off, TX on, RTS active
out (CS_SIO_A_C),A
ret
BTLDR_SUB_INPUT_READ:
CALL BTLDR_SUB_RTS_ON
XOR A
OUT (CS_SIO_A_C), a
IN A, (CS_SIO_A_C)
AND 1
JR Z, BTLDR_SUB_INPUT_READ ;LOOP IF BUFFER EMPTY
CALL BTLDR_SUB_RTS_OFF
IN A, (CS_SIO_A_D)
RET

View File

@@ -0,0 +1,136 @@
;DIP SWICTHES
;1843200 CLK / x16 SIO CLOCK MODE = 115200
;MAX BAUD RATE = 115200
;DIP VALUE = 115200/<BAUD>
;
;9600 -> 12 / 00110000
;
CONSOLE_INIT:
CONSOLE_INIT_CTC:
;LD A,00001111b ; Set /16 Divider, CPU Trigger, Time COnstant Follows
LD A,01001111b ; External Trigger, Time COnstant Follows
OUT (CS_CTC_0),A
IN A,(CS_DIP) ; Read BAUD from DIP-Switches
;LD A,39
OUT (CS_CTC_0),A
CONSOLE_INIT_SIO:
LD A,00110000b ;write into WR0: error reset, select WR0
OUT (CS_SIO_A_C),A
LD a,018h ;write into WR0: channel reset
OUT (CS_SIO_A_C),A
LD a,004h ;write into WR0: select WR4
OUT (CS_SIO_A_C),A
LD a,01000100b ;write into WR4: clkx16,1 stop bit, no parity
OUT (CS_SIO_A_C),A
LD a,005h ;write into WR0: select WR5
OUT (CS_SIO_A_C),A
LD a,11101000b ;DTR inactive, TX 8bit, BREAK off, TX on, RTS inactive
OUT (CS_SIO_A_C),A
LD a,01h ;write into WR0: select WR1
OUT (CS_SIO_A_C),A
LD a,00000100b ;no interrupt in CH B, special RX condition affects vect
OUT (CS_SIO_A_C),A
LD a,02h ;write into WR0: select WR2
OUT (CS_SIO_A_C),A
LD a,0h ;write into WR2: cmd line int vect (see int vec table)
;bits D3,D2,D1 are changed according to RX condition
OUT (CS_SIO_A_C),A
LD a,003h ;write into WR0: select WR3
OUT (CS_SIO_A_C),A
LD a,0C1h ;RX 8bit, auto enable off, RX on
OUT (CS_SIO_A_C),A
;Channel A RX active
RET
; A contains char
; Destroys A
print_char:
push af
out (CS_SIO_A_D),a
call print_wait_out
pop af
;call print_char
ret
; HL contains pointer to string
; Destroy A, HL
print_str:
ld a, (hl)
or a
jr z,print_str_end
call print_char
inc hl
jr print_str
print_str_end:
ret
print_clear:
ld hl, [MSG_CLEAR]
call print_str
ret
print_newLine:
ld a,10
call print_char
ld a,13
call print_char
ret
; destroys a
print_wait_out:
; check for TX buffer empty
sub a ;clear a, write into WR0: select RR0
inc a ;select RR1
out (CS_SIO_A_C),A
in A,(CS_SIO_A_C) ;read RRx
bit 0,A
jr z,print_wait_out
ret
print_a_hex:
push af
push bc
push de
call STRCONV_BYTES_TO_HEX
ld a,b
call print_char
ld a,c
call print_char
pop de
pop bc
pop af
read_char:
call A_RTS_ON
nop
xor a ; a = 0
out (CS_SIO_A_C), a ; select reg 0
in a, (CS_SIO_A_C) ; read reg 0
and 1 ; mask D0 (recieve char available)
call A_RTS_OFF
ret Z ; return 0 if no char
in a, (CS_SIO_A_D) ; read char if avail
ret ; return
;MSG_CRSR_0:
; db 0x1B, "[?25h",0
;MSG_CRSR_1:
; db 0x1B, "[?25l",0
MSG_CLEAR:
db 27, '[2J', 27, '[H',0
; Serial Util Functions
A_RTS_OFF:
ld a,005h ;write into WR0: select WR5
out (CS_SIO_A_C),A
ld a,068h ;DTR inactiveh, TX 8bit, BREAK off, TX on, RTS inactive
out (CS_SIO_A_C),A
ret
A_RTS_ON:
ld a,005h ;write into WR0: select WR5
out (CS_SIO_A_C),A
ld a,0EAh ;DTR active, TX 8bit, BREAK off, TX on, RTS active
out (CS_SIO_A_C),A
ret

View File

@@ -0,0 +1,89 @@
; HL Contains Address to string
; E is 0xFF if error
; E is 0x00 if okay
; A returns byte
; A,DE are destroyed
DHEX_TO_BYTE:
PUSH HL ;Backup pointer
; Load First Byte
LD A,(HL) ;Load first char (high)
CALL HEX_TO_BIN ;Conv chart to 4bit
jr C, DHEX_TO_BYTE_FAILED ;If error jmp to DHEX_TO_BYTE_FAILED
SLA A ;shift result to upper 4 bits
SLA A
SLA A
SLA A
LD D,A ;store result in D
INC HL ;next byte
LD A,(HL) ;load 2nd char (lower)
CALL HEX_TO_BIN ;Conv chart to 4bit
jr C, DHEX_TO_BYTE_FAILED ;If error jmp to DHEX_TO_BYTE_FAILED
OR D ;merge D with accumulator
POP HL ;restor original pointer
LD E,0x00 ;set error to 0x00 = no error
RET
DHEX_TO_BYTE_FAILED:
LD E,0xFF ;set error to oxFF
;LD A,0x00
POP HL
RET
; REG A Contains CHAR-Low
; If failed, Carry is set
HEX_TO_BIN:
SUB 48 ; 0 is 0
jp PE, HEX_TO_INVALID_2; to low (SUB overflow)
CP 10 ; Value is between 0 and 9
JR C, HEX_TO_BIN_2
SUB 7
jp PE, HEX_TO_INVALID_2; to low (SUB overflow)
HEX_TO_BIN_2:
CP 16
JR NC, HEX_TO_INVALID_2; if bigger than 15-> fail
AND 0x0F
RET
HEX_TO_INVALID_2:
SCF ;set carry flag
RET
;*****************
; Convert Byte to Hex Char (ASCII)
;*****************
;Description: the StrLength function inline
;
;Inputs: A contains input byte
;
;Outputs: BC contains 2 Bytes of ASCII (HEX)
;
;Destroys: A, BC,
STRCONV_BYTES_TO_HEX:
PUSH AF;Backup A Register
RRA
RRA
RRA
RRA
CALL STRCONV_BYTES_TO_HEX_1
;LD A,D
LD B,A
POP AF ; Reload first Byte
CALL STRCONV_BYTES_TO_HEX_1
;LD A,D
LD C,A
RET
STRCONV_BYTES_TO_HEX_1:
AND 0x0F
ADD 48
CP 58 ; Check if less than 58 (less than ASCII 9)
;JR C, STRCONV_BYTES_TO_HEX_2
RET C
ADD 7 ; A-F
RET
STRCONV_BYTES_TO_HEX_2:
;LD D,A
RET

View File

@@ -0,0 +1,78 @@
debug_init:
ld A,VAR_CONSOLE_CONF ; Setup CTC
out (IO_CTC0_C0),A ; Controll word, software reset, time constant follows, CLK/TRG starts timer
ld A,VAR_CONSOLE_BAUD ; Setup timer const
out (IO_CTC0_C0),A ; Load timer const into CTC (Setup Baud generator)
;set up TX and RX:W
ld a,00110000b ;write into WR0: error reset, select WR0
out (IO_SIO0A_C),A
ld a,018h ;write into WR0: channel reset
out (IO_SIO0A_C),A
ld a,004h ;write into WR0: select WR4
out (IO_SIO0A_C),A
ld a,04h ;44h write into WR4: clkx1,1 stop bit, no parity
out (IO_SIO0A_C),A
ld a,005h ;write into WR0: select WR5
out (IO_SIO0A_C),A
ld a,068h ;DTR active, TX 8bit, BREAK off, TX on, RTS inactive
out (IO_SIO0A_C),A
ld a,01h ;write into WR0: select WR1
out (IO_SIO0A_C),A
ld a,00000100b ;no interrupt in CH B, special RX condition affects vect
out (IO_SIO0A_C),A
;enable SIO channel A RX
ld a,003h ;write into WR0: select WR3
out (IO_SIO0A_C),A
ld a,0C1h ;RX 8bit, auto enable off, RX on
out (IO_SIO0A_C),A
;Channel A RX active
ld hl,[MSG_START_DBG]
call debug_print_str
ret
debug_print_char:
out (IO_SIO0A_D),a
call debug_wait_out
ret
debug_print_str:
ld a, (hl)
or a
ret z
call debug_print_char
inc hl
jr debug_print_str
debug_print_newLine:
ld a,10
call debug_print_char
ld a,13
call debug_print_char
ret
debug_wait_out:
; check for TX buffer empty
sub a ;clear a, write into WR0: select RR0
inc a ;select RR1
out (IO_SIO0A_C),A
in A,(IO_SIO0A_C) ;read RRx
bit 0,A
jr z,debug_wait_out
ret
MSG_START_DBG:
db "Debug interface active!",13,10,0
debug_a_hex:
push BC
push AF
call STRCONV_BYTES_TO_HEX
ld a, b
call debug_print_char
ld a, c
call debug_print_char
pop AF
pop BC
ret

View File

@@ -0,0 +1,322 @@
; HL contains start address
; B contains length
disassemble:
call dasm_print16hex_addr ;print address (HL)
call disassemble_table_seek
xor a
or b
or c
jr z, disassemble_err ;if bc==0000h
ld a,(hl) ;load first byte
call dasm_print8hex ;print value
ld a,(hl)
cp 0xC3 ;C3 JPnn
jp z, dasm_C3
;start getting value
disassemble_err:
ld a,(hl)
call dasm_print8hex ;print value
push hl
ld hl, [dasm_UU]
call print_str
pop hl
disassemble_continue:
call print_newLine
inc hl
dec b
jp nz, disassemble
ret
;A contains char
;BC contains returned position
disassemble_table_seek:
push hl
ld c,a
disassemble_table_seek_loop:
ld a,(hl)
cp c ; if match
jr z, disassemble_table_found
or a ; if null
jp z, disassemble_table_notfound
ld b,0
ld c,4
add hl,bc
ld a,(hl)
ld c,a
add hl,bc
inc hl
jr disassemble_table_seek_loop
disassemble_table_found
ld b,H
ld c,l
pop hl
ret
disassemble_table_notfound
ld b,0
ld c,0
pop hl
ret
dasm_C3: ;JP nn (276)
inc hl
ld e, (HL)
inc hl
ld d, (HL)
inc hl
;de now has jmp value
push hl
ld hl, [dasm_C3_str]
call print_str
ld h,d
ld l,e
call dasm_print16hex_addr
pop hl
jp disassemble_continue
dasm_C3_str:
db "JP ",0x00
dasm_JPccnn: ;JP nn (276)
rra
rra
rra
and 0x07
call dasm_printFlags
ld a, ","
call print_char
inc hl
ld e, (HL)
inc hl
ld d, (HL)
inc hl
;de now has jmp value
push hl
ld hl, [dasm_C3_str]
call print_str
ld h,d
ld l,e
call dasm_print16hex_addr
pop hl
jp disassemble_continue
dasm_18: ;JR e
inc hl
ld e, (HL)
inc hl
;de now has jmp value
push hl
ld hl, [dasm_18_str]
call print_str
ld a,e
call dasm_print8relhex
pop hl
jp disassemble_continue
dasm_18_str:
db "JR ",0x00
dasm_38: ;JR C,e
inc hl
ld e, (HL)
inc hl
;de now has jmp value
push hl
ld hl, [dasm_38_str]
call print_str
ld a,e
call dasm_print8relhex
pop hl
jp disassemble_continue
dasm_38_str:
db "JR C, ",0x00
dasm_30: ;JR NC,e
inc hl
ld e, (HL)
inc hl
;de now has jmp value
push hl
ld hl, [dasm_30_str]
call print_str
ld a,e
call dasm_print8relhex
pop hl
jp disassemble_continue
dasm_30_str:
db "JR NC, ",0x00
dasm_28: ;JR Z,e
inc hl
ld e, (HL)
inc hl
;de now has jmp value
push hl
ld hl, [dasm_28_str]
call print_str
ld a,e
call dasm_print8relhex
pop hl
jp disassemble_continue
dasm_28_str:
db "JR Z, ",0x00
dasm_20: ;JR NZ,e
inc hl
ld e, (HL)
inc hl
;de now has jmp value
push hl
ld hl, [dasm_20_str]
call print_str
ld a,e
call dasm_print8relhex
pop hl
jp disassemble_continue
dasm_20_str:
db "JR NZ, ",0x00
dasm_E9: ;JR NZ,e
inc hl
push hl
ld hl, [dasm_20_str]
call print_str
pop hl
jp disassemble_continue
dasm_E9_str:
db "JP (HL), ",0x00
dasm_E9: ;JP (HL)
inc hl
push hl
ld hl, [dasm_E9_str]
call print_str
pop hl
jp disassemble_continue
dasm_E9_str:
db "JP (HL)",0x00
dasm_E9: ;JP (IX)
inc hl
push hl
ld hl, [dasm_E9_str]
call print_str
pop hl
jp disassemble_continue
dasm_E9_str:
db "JP (IX)",0x00
dasm_E9: ;JP (IY)
inc hl
push hl
ld hl, [dasm_E9_str]
call print_str
pop hl
jp disassemble_continue
dasm_E9_str:
db "JP (IY)",0x00
dasm_00: ;JP nn (276)
inc hl
push hl
ld hl, [dasm_00_str]
call print_str
pop hl
jp disassemble_continue
dasm_00_str:
db "NOP",0x00
dasm_FF: ;JP nn (276)
inc hl
push hl
ld hl, [dasm_FF_str]
call print_str
pop hl
jp disassemble_continue
dasm_FF_str:
db "---",0x00
dasm_print16hex_addr:
ld a,"$"
call print_char
ld a,h
call print_a_hex
ld a,l
call print_a_hex
ld a,"h"
call print_char
ld a," "
call print_char
ret
dasm_print8hex:
call print_a_hex
ld a,"h"
call print_char
ld a," "
call print_char
ret
dasm_print8relhex:
push af
and 0x80
jp nz, dasm_print8relhex_neg
ld a,"$"
call print_char
ld a,"+"
call print_char
pop af
call print_a_hex
ld a,"h"
call print_char
ret
dasm_print8relhex_neg:
ld a,"$"
call print_char
ld a,"-"
call print_char
pop af
neg
call print_a_hex
ld a,"h"
call print_char
ret
dasm_printFlags:
push hl
ld hl, [dasm_printFlags_table]
rlca
ld b,0
ld c,a
add hl,bc
call print_str
ld a, " "
call print_char
pop hl
ret
dasm_printFlags_table:
db "NZ",0
db "Z",0,0
db "NC"
db "C",0,0
db "PO",0
db "PE",0
db "P",0,0
db "M",0,0

View File

@@ -0,0 +1,569 @@
var_opcode_start equ PRG_RAM_START ;16 bit pointer to opcode in mem
var_opcode_table equ PRG_RAM_START+2 ;16 bit pointer to opcode in table
var_opcode equ PRG_RAM_START+4 ;8 bit opcode value
var_opcode_x equ PRG_RAM_START+5 ;8 bit opcode extension value
var_opcode_length equ PRG_RAM_START+6 ;8 bit opcode length (in bytes)
var_opcode_string equ PRG_RAM_START+7 ;16 bit pointer to opcode string
var_opcode_pcount equ PRG_RAM_START+9 ;8 bit opcode param count
var_bytes_count equ PRG_RAM_START+10 ;bytes to examine
; HL contains start address
; B contains length
disassemble:
ld a,b
ld (var_bytes_count),a
disassemble_next:
ld (var_opcode_start), hl ;16 bit pointer to opcode in mem
ld a,(hl) ;load opcode to find in A
ld (var_opcode), a ;8 bit opcode value
inc hl
ld a,(hl) ;load opcode to find in A
ld (var_opcode_x), a ;8 bit opcode extended value
dec hl
call disassemble_table_seek
ld a,b
or c
jp z, disassemble_err ;if bc==0000h
ld (var_opcode_table), bc ;16 bit pointer to opcode in table
;load params
inc bc
inc bc
inc bc
inc bc
ld a,(bc)
ld (var_opcode_length),A ;8 bit opcode length (in bytes)
inc bc
ld a, (bc)
ld e,a
inc bc
ld a, (bc)
ld d,a
ld (var_opcode_string),de ;16 bit pointer to opcode string
inc bc
ld a,(bc)
ld (var_opcode_pcount),A ;8 bit opcode param count
;values are prepared. Continue with print
ld hl,(var_opcode_start) ;print address
call dasm_print16hex_addr
ld a,(var_opcode_length)
ld b, a
;print up to 4 opcode bytes
ld hl,(var_opcode_start)
disassemble_print_opcode_raw
ld a,(hl) ;load first byte
call print_a_hex
inc hl
djnz disassemble_print_opcode_raw
ld a,"h"
call print_char
;fill empty spots
ld a,(var_opcode_length)
ld b,a
ld a,6
sub b
ld b,a
disassemble_print_opcode_raw_fill:
ld a," "
call print_char
ld a," "
call print_char
djnz disassemble_print_opcode_raw_fill
ld a," "
call print_char
push hl
;print opcode
ld hl,(var_opcode_string)
call print_str
;print params
ld a,(var_opcode_pcount)
or a
jp z, disassemble_print_opcode_params_end ;skip if no params
ld hl,(var_opcode_table)
ld bc, 8
add hl,bc ;hl now has address of first param
ld a,(var_opcode_pcount)
ld b,a
disassemble_print_opcode_params_loop:
;ld a,(hl) ;load param
;call print_a_hex
ld a,(hl) ;load param
cp 0x01
call z, param_01
cp 0x02
call z, param_02
cp 0x03
call z, param_03
cp 0x04
call z, param_04
cp 0x05
call z, param_05
cp 0x06
call z, param_06
cp 0x07
call z, param_07
cp 0x08
call z, param_08
cp 0x09
call z, param_09
cp 0x10
call z, param_10
cp 0x11
call z, param_11
cp 0x12
call z, param_12
cp 0x13
call z, param_13
cp 0x0A
call z, param_0A
;strings
cp 0x80
call z, param_80
cp 0x81
call z, param_81
inc hl
djnz disassemble_print_opcode_params_loop
disassemble_print_opcode_params_end:
pop hl
jr disassemble_continue
disassemble_err:
call dasm_print16hex_addr
ld a,(hl)
call dasm_print8hex ;print value
inc hl
push hl
ld hl, [dasm_UU]
call print_str
pop hl
disassemble_continue:
call print_newLine
;inc hl
ld a,(var_bytes_count)
dec a
ld (var_bytes_count),a
jp nz, disassemble_next
ret
;A contains opcode
;BC contains returned position
disassemble_table_seek:
push hl
ld hl, [dasm_opcode_table]
disassemble_table_seek_loop:
ld a,(var_opcode)
ld c,a
ld a,(hl)
cp 0xFF ; if null
jp z, disassemble_table_notfound
;apply mask
push af
inc hl
ld b,(hl) ;load mask
dec hl
ld a,c
and b ;apply mask
ld c,a
pop af
cp c ; if match
jr z, disassemble_table_first_match
ld b,0
ld c,7
add hl,bc
ld a,(hl)
ld c,a
add hl,bc
inc hl
jr disassemble_table_seek_loop
disassemble_table_first_match
inc hl
inc hl
ld c,(hl) ;load opcode x from table
inc hl
ld a,(var_opcode_x) ;load current opcode x
ld b,(hl) ;load mask
and b ;apply mask
cp c ;compare to table
dec hl
dec hl
dec hl
jr z, disassemble_table_found ;IF FOUND
ld b,0 ;else continue with next
ld c,7
add hl,bc
ld a,(hl)
ld c,a
add hl,bc
inc hl
jr disassemble_table_seek_loop
disassemble_table_found
ld b,H
ld c,l
pop hl
ret
disassemble_table_notfound
ld b,0
ld c,0
pop hl
ret
dasm_print16hex_addr:
ld a,"$"
call print_char
ld a,h
call print_a_hex
ld a,l
call print_a_hex
ld a,"h"
call print_char
ld a," "
call print_char
ret
dasm_print8hex:
call print_a_hex
ld a,"h"
call print_char
ld a," "
call print_char
ret
param_01: ; 0x01 16bit address pointer
push hl
ld de,(var_opcode_start)
inc de
ld a,(de)
ld l,a
inc de
ld a,(de)
ld h,a
ld a,"$"
call print_char
ld a,h
call print_a_hex
ld a,l
call print_a_hex
ld a,"h"
call print_char
ld a," "
call print_char
call param_comma
pop hl
ret
param_02:
push bc
ld de,(var_opcode_start)
ld a,(de)
rra
rra
and 0x0E
push hl
ld hl, [dasm_printFlags_table]
ld b,0
ld c,a
add hl,bc
call print_str
ld a, " "
call print_char
pop hl
pop bc
ret
param_03:
ld de,(var_opcode_start)
inc de
ld a,(de)
push af
and 0x80
jp nz, param_03_neg
ld a,"$"
call print_char
ld a,"+"
call print_char
pop af
call print_a_hex
ld a,"h"
call print_char
jr param_03_done
param_03_neg:
ld a,"$"
call print_char
ld a,"-"
call print_char
pop af
neg
call print_a_hex
ld a,"h"
call print_char
jr param_03_done
param_03_done:
call param_comma
ret
param_04:
ld de,(var_opcode_start)
inc de
ld a,(de)
cp 0x4D
jr z,param_04_i
ld a,"N"
call print_char
ret
param_04_i:
ld a,"I"
call print_char
ret
param_05:
push bc
ld de,(var_opcode_start)
ld a,(de)
and 0x38
; print hex char
call dasm_print8hex
pop bc
ret
param_06:
push bc
ld de,(var_opcode_start)
ld a,(de)
rra
rra
rra
and 0x07
call param_printRegister
ld a," "
call print_char
ld a,","
call print_char
pop bc
ret
param_07:
push bc
ld de,(var_opcode_start)
ld a,(de)
and 0x07
call param_printRegister
pop bc
ret
param_08:
push bc
ld de,(var_opcode_start)
inc de
ld a,(de)
call dasm_print8hex
pop bc
ret
param_0A:
push hl
ld de,(var_opcode_start)
inc de
inc de
jr param_09_0A
param_09:
push hl
ld de,(var_opcode_start)
inc de
param_09_0A:
ld a,(de)
ld l,a
inc de
ld a,(de)
ld h,a
ld a,h
call print_a_hex
ld a,l
call print_a_hex
pop hl
ret
param_10:
push bc
ld de,(var_opcode_start)
ld a,(de)
rra
rra
rra
and 0x07
call param_printRegister
pop bc
ret
param_11:
push hl
push bc
ld de,(var_opcode_start)
jr param_11_12
param_12:
push hl
push bc
ld de,(var_opcode_start)
inc de
param_11_12:
ld a,(de)
rra
rra
rra
and 0x06
push af
;check which table to use
ld hl, (var_opcode_start)
ld a,(hl)
cp 0xDD
jr z,param_11_12_ix
cp 0xFD
jr z,param_11_12_iy
param_11_12_def:
ld hl, [dasm_printRegister8_table]
jr param_11_12_all
param_11_12_ix:
ld hl, [dasm_printRegisterIX_table]
jr param_11_12_all
param_11_12_iy:
ld hl, [dasm_printRegisterIY_table]
param_11_12_all:
pop af
ld b,0
ld c,a
add hl, bc
ld a,(hl)
call print_char
inc hl
ld a,(hl)
call print_char
pop bc
pop hl
ret
param_13:
push hl
push bc
ld de,(var_opcode_start)
ld a,(de)
rra
rra
rra
and 0x06
push af
;check which table to use
ld hl, (var_opcode_start)
ld a,(hl)
ld hl, [dasm_printRegisterSP_table]
jr param_11_12_all ;reuse code from 11_12
param_81:
push hl
push bc
ld hl, (var_opcode_string)
ld b,2
jr param_80_seek
param_80:
push hl
push bc
ld hl, (var_opcode_string)
ld b,1
param_80_seek:
ld a,(hl)
inc hl
and a
jr nz, param_80_seek
;found
dec b ;found but counter too high
jp nz, param_80_seek
call print_str
pop bc
pop hl
ret
param_printRegister:
push hl
cp 0x06
jr z, param_printRegisterHL
cp 0x07
jr z, param_printRegisterA
ld hl, [dasm_printRegister8_table]
ld b,0
ld c,a
add hl,bc
ld a, (hl)
call print_char
pop hl
ret
param_printRegisterHL:
ld hl, [dasm_printRegister8_table_HL]
call print_str
pop hl
ret
param_printRegisterA:
ld a,"A"
call print_char
pop hl
ret
param_comma:
ld a,b
cp 1
ret z
ld a," "
call print_char
ld a,","
call print_char
ret

View File

@@ -0,0 +1,333 @@
;disassembler tables
dasm_opcode_table:
;byte 0 = opcode
;byte 1 = opcode mask
;byte 2 = opcode extended
;byte 3 = opcode extended mask
;byte 4 = length
;byte 5+6 = pointer to string
;byte 7 = params = count of paramters
;byte 8+ = paramters
; 0x01 16bit address pointer
; 0x02 flag bit 3-5
; 0x03 relative jmp address
; 0x04 RETI/RETN
; 0x05 RST Vector
; 0x06 register (r)
; 0x07 register (r')
; 0x08 8-Bit value
; 0x09 16-Bit value
; 0x0A 16-bit value with offset +1
; 0x10 same as 0x06 without ","
; 0x11 print 16 bit register from 1st byte
; 0x12 print 16 bit register from 2nd byte
; 0x13 push/pop register lookup
; 0x80 print string suffix
; 0x81 print string suffix 2
defb 0x00, 0xFF, 0x00, 0x00, 1, [dasm_00], [dasm_00]>>8,0 ;NOP
;General-Purpose Arithmetic and CPU Control Groups
defb 0x27, 0xFF, 0x00, 0x00, 1, [dasm_27], [dasm_27]>>8, 0 ;DAA
defb 0x2F, 0xFF, 0x00, 0x00, 1, [dasm_2F], [dasm_2F]>>8, 0 ;CPL
defb 0xED, 0xFF, 0x44, 0xFF, 2, [dasm_ED_44], [dasm_ED_44]>>8, 0 ;NEG
defb 0x3f, 0xFF, 0x00, 0x00, 1, [dasm_3F], [dasm_3F]>>8, 0 ;CCF
defb 0x37, 0xFF, 0x00, 0x00, 1, [dasm_37], [dasm_37]>>8, 0 ;SCF
;defb 0x00, 0xFF, 0x00, 0x00, 1, [dasm_00], [dasm_00]>>8,0 ;NOP -> already at top for performance reasons
defb 0x76, 0xFF, 0x00, 0x00, 1, [dasm_76], [dasm_76]>>8, 0 ;HALT
defb 0xF3, 0xFF, 0x00, 0x00, 1, [dasm_F3], [dasm_F3]>>8, 0 ;DI
defb 0xFB, 0xFF, 0x00, 0x00, 1, [dasm_FB], [dasm_FB]>>8, 0 ;EI
defb 0xED, 0xFF, 0x46, 0xFF, 2, [dasm_ED_46], [dasm_ED_46]>>8, 0 ;IM 0
defb 0xED, 0xFF, 0x56, 0xFF, 2, [dasm_ED_56], [dasm_ED_56]>>8, 0 ;IM 1
defb 0xED, 0xFF, 0x5E, 0xFF, 2, [dasm_ED_5E], [dasm_ED_5E]>>8, 0 ;IM 2
;Exchange, Block Transfer, and Search Group
defb 0xEB, 0xFF, 0x00, 0x00, 1, [dasm_BE], [dasm_BE]>>8, 0 ;EX DE, HL
defb 0x08, 0xFF, 0x00, 0x00, 1, [dasm_08], [dasm_08]>>8, 0 ;EX AF, AF
defb 0xD9, 0xFF, 0x00, 0x00, 1, [dasm_D9], [dasm_D9]>>8, 0 ;EXX
defb 0xE3, 0xFF, 0x00, 0x00, 1, [dasm_E3], [dasm_E3]>>8, 0 ;EX (SP), HL
defb 0xDD, 0xFF, 0xE3, 0xFF, 2, [dasm_DD_E3], [dasm_DD_E3]>>8, 0 ;EX (SP), IX
defb 0xFD, 0xFF, 0xE3, 0xFF, 2, [dasm_FD_E3], [dasm_FD_E3]>>8, 0 ;EX (SP), IY
defb 0xED, 0xFF, 0xA0, 0xFF, 2, [dasm_ED_A0], [dasm_ED_A0]>>8, 0 ;LDI
defb 0xED, 0xFF, 0xB0, 0xFF, 2, [dasm_ED_B0], [dasm_ED_B0]>>8, 0 ;LDIR
defb 0xED, 0xFF, 0xA8, 0xFF, 2, [dasm_ED_A8], [dasm_ED_A8]>>8, 0 ;LDD
defb 0xED, 0xFF, 0xB8, 0xFF, 2, [dasm_ED_B8], [dasm_ED_B8]>>8, 0 ;LDDR
defb 0xED, 0xFF, 0xA1, 0xFF, 2, [dasm_ED_A1], [dasm_ED_A1]>>8, 0 ;CPI
defb 0xED, 0xFF, 0xB1, 0xFF, 2, [dasm_ED_B1], [dasm_ED_B1]>>8, 0 ;CPIR
defb 0xED, 0xFF, 0xA9, 0xFF, 2, [dasm_ED_A9], [dasm_ED_A9]>>8, 0 ;CPD
defb 0xED, 0xFF, 0xB9, 0xFF, 2, [dasm_ED_B9], [dasm_ED_B9]>>8, 0 ;CPDR
;JUMP Group
defb 0xC3, 0xFF, 0x00, 0x00, 3, [dasm_C3], [dasm_C3]>>8,1, 0x01 ;JP nn
defb 0xC2, 0xC7, 0x00, 0x00, 3, [dasm_C3], [dasm_C3]>>8,3, 0x02, 0x80, 0x01 ;JP cc,nn
defb 0x18, 0xFF, 0x00, 0x00, 2, [dasm_18], [dasm_18]>>8,1, 0x03 ;JR e
defb 0x38, 0xFF, 0x00, 0x00, 2, [dasm_38], [dasm_38]>>8,1, 0x03 ;JR C,e
defb 0x30, 0xFF, 0x00, 0x00, 2, [dasm_30], [dasm_30]>>8,1, 0x03 ;JR NC,e
defb 0x28, 0xFF, 0x00, 0x00, 2, [dasm_28], [dasm_28]>>8,1, 0x03 ;JR Z,e
defb 0x20, 0xFF, 0x00, 0x00, 2, [dasm_20], [dasm_20]>>8,1, 0x03 ;JR NZ,e
defb 0xE9, 0xFF, 0x00, 0x00, 2, [dasm_E9], [dasm_E9]>>8,0 ;JP (HL)
defb 0xDD, 0xFF, 0xE9, 0xFF, 2, [dasm_DD], [dasm_DD]>>8,0 ;JP (IX)
defb 0xFD, 0xFF, 0xE9, 0xFF, 2, [dasm_FD], [dasm_FD]>>8,0 ;JP (IY)
defb 0x10, 0xFF, 0x00, 0x00, 2, [dasm_10], [dasm_10]>>8,1, 0x03 ;DJNZ, e
;Call and Return Group
defb 0xCD, 0xFF, 0x00, 0x00, 3, [dasm_CD], [dasm_CD]>>8,1, 0x01 ;CALL nn
defb 0xC4, 0xC7, 0x00, 0x00, 3, [dasm_CD], [dasm_CD]>>8,2, 0x02, 0x01 ;CALL cc,nn
defb 0xC9, 0xFF, 0x00, 0x00, 1, [dasm_C9], [dasm_C9]>>8,0 ;RET
defb 0xC0, 0xC7, 0x00, 0x00, 1, [dasm_C9], [dasm_C9]>>8,1, 0x02 ;RET cc
defb 0xED, 0xFF, 0x4D, 0xFF, 2, [dasm_ED_4D], [dasm_ED_4D]>>8,0 ;RETI
defb 0xED, 0xFF, 0x45, 0xFF, 2, [dasm_ED_45], [dasm_ED_45]>>8,0 ;RETN
defb 0xC7, 0xC7, 0x00, 0x00, 1, [dasm_FF], [dasm_FF]>>8,1, 0x05 ;RST
;8-Bit load group
defb 0x0A, 0xFF, 0x00, 0x00, 1, [dasm_0A], [dasm_0A]>>8, 0 ;LD A, (BC)
defb 0x1A, 0xFF, 0x00, 0x00, 1, [dasm_1A], [dasm_1A]>>8, 0 ;LD A, (DE)
defb 0x3A, 0xFF, 0x00, 0x00, 3, [dasm_3A], [dasm_3A]>>8, 2, 0x09, 0x80 ;LD A, (nn)
defb 0x02, 0xFF, 0x00, 0x00, 1, [dasm_02], [dasm_02]>>8, 0 ;LD (BC), A
defb 0x12, 0xFF, 0x00, 0x00, 1, [dasm_12], [dasm_12]>>8, 0 ;LD (DE), A
defb 0x32, 0xFF, 0x00, 0x00, 3, [dasm_32], [dasm_32]>>8, 2, 0x09, 0x80 ;LD (nn), A
defb 0xED, 0xFF, 0x57, 0xFF, 2, [dasm__ED_57], [dasm__ED_57]>>8, 0 ;LD A, I
defb 0xED, 0xFF, 0x5F, 0xFF, 2, [dasm__ED_5F], [dasm__ED_5F]>>8, 0 ;LD A, R
defb 0xED, 0xFF, 0x47, 0xFF, 2, [dasm__ED_47], [dasm__ED_47]>>8, 0 ;LD I, A
defb 0xED, 0xFF, 0x4F, 0xFF, 2, [dasm__ED_4F], [dasm__ED_4F]>>8, 0 ;LD R, A
defb 0x06, 0xC7, 0x00, 0x00, 2, [dasm__LD], [dasm__LD]>>8, 2, 0x06, 0x08 ;LD r, n
defb 0x40, 0xC0, 0x00, 0x00, 1, [dasm__LD], [dasm__LD]>>8, 2, 0x06, 0x07 ;LD r, r' / LD r, (HL) / LD (HL), r
;8-Bit Arithmetic Group
defb 0x80, 0xF8, 0x00, 0x00, 1, [dasm_80C6], [dasm_80C6]>>8, 1, 0x07 ;ADD A, r / ADD A, (HL)
defb 0xC6, 0xFF, 0x00, 0x00, 2, [dasm_80C6], [dasm_80C6]>>8, 1, 0x08 ;ADD A, n
defb 0xDD, 0xFF, 0x86, 0xFF, 3, [dasm_DD_86], [dasm_DD_86]>>8, 2, 0x08, 0x80 ;ADD A, (IX + d)
defb 0xFD, 0xFF, 0x86, 0xFF, 3, [dasm_FD_86], [dasm_FD_86]>>8, 2, 0x08, 0x80 ;ADD A, (IY + d)
defb 0xC8, 0xF8, 0x00, 0x00, 1, [dasm_C88E], [dasm_C88E]>>8, 1, 0x07 ;ADC A, r / ADC A, (HL)
defb 0x8E, 0xF8, 0x00, 0x00, 2, [dasm_C88E], [dasm_C88E]>>8, 1, 0x08 ;ADC A, n
defb 0xDD, 0xFF, 0x8E, 0xFF, 3, [dasm_DD_8E], [dasm_DD_8E]>>8, 2, 0x08, 0x80 ;ADC A, (IX + d)
defb 0xFD, 0xFF, 0x8E, 0xFF, 3, [dasm_FD_8E], [dasm_FD_8E]>>8, 2, 0x08, 0x80 ;ADC A, (IY + d)
defb 0x90, 0xF8, 0x00, 0x00, 1, [dasm__SUB], [dasm__SUB]>>8, 1, 0x07 ;SUB r / SUB A, (HL)
defb 0xD6, 0xFF, 0x00, 0x00, 2, [dasm__SUB], [dasm__SUB]>>8, 1, 0x08 ;SUB n
defb 0xDD, 0xFF, 0x96, 0xFF, 3, [dasm_DD_96], [dasm_DD_96]>>8, 2, 0x08, 0x80 ;SUB (IX + d)
defb 0xFD, 0xFF, 0x96, 0xFF, 3, [dasm_FD_96], [dasm_FD_96]>>8, 2, 0x08, 0x80 ;SUB (IY + d)
defb 0x94, 0xF8, 0x00, 0x00, 1, [dasm__SBC], [dasm__SBC]>>8, 1, 0x07 ;SBC A,r / SBC A, (HL)
defb 0xDE, 0xFF, 0x00, 0x00, 2, [dasm__SBC], [dasm__SBC]>>8, 1, 0x08 ;SBC A,n
defb 0xDD, 0xFF, 0x9E, 0xFF, 3, [dasm_DD_9E], [dasm_DD_9E]>>8, 2, 0x08, 0x80 ;SBC A,(IX + d)
defb 0xFD, 0xFF, 0x9E, 0xFF, 3, [dasm_FD_9E], [dasm_FD_9E]>>8, 2, 0x08, 0x80 ;SBC A,(IY + d)
defb 0xA0, 0xF8, 0x00, 0x00, 1, [dasm__AND], [dasm__AND]>>8, 1, 0x07 ;AND A,r / AND A, (HL)
defb 0xE6, 0xFF, 0x00, 0x00, 2, [dasm__AND], [dasm__AND]>>8, 1, 0x08 ;AND A,n
defb 0xDD, 0xFF, 0xA6, 0xFF, 3, [dasm_DD_A6], [dasm_DD_A6]>>8, 2, 0x08, 0x80 ;AND A,(IX + d)
defb 0xFD, 0xFF, 0xA6, 0xFF, 3, [dasm_FD_A6], [dasm_FD_A6]>>8, 2, 0x08, 0x80 ;AND A,(IY + d)
defb 0xB0, 0xF8, 0x00, 0x00, 1, [dasm__OR], [dasm__OR]>>8, 1, 0x07 ;OR A,r / OR A, (HL)
defb 0xF6, 0xFF, 0x00, 0x00, 2, [dasm__OR], [dasm__OR]>>8, 1, 0x08 ;OR A,n
defb 0xDD, 0xFF, 0xB6, 0xFF, 3, [dasm_DD_B6], [dasm_DD_B6]>>8, 2, 0x08, 0x80 ;OR A,(IX + d)
defb 0xFD, 0xFF, 0xB6, 0xFF, 3, [dasm_FD_B6], [dasm_FD_B6]>>8, 2, 0x08, 0x80 ;OR A,(IY + d)
defb 0xA8, 0xF8, 0x00, 0x00, 1, [dasm__XOR], [dasm__XOR]>>8, 1, 0x07 ;XOR A,r / XOR A, (HL)
defb 0xEE, 0xFF, 0x00, 0x00, 2, [dasm__XOR], [dasm__XOR]>>8, 1, 0x08 ;XOR A,n
defb 0xDD, 0xFF, 0xAE, 0xFF, 3, [dasm_DD_AE], [dasm_DD_AE]>>8, 2, 0x08, 0x80 ;XOR A,(IX + d)
defb 0xFD, 0xFF, 0xAE, 0xFF, 3, [dasm_FD_AE], [dasm_FD_AE]>>8, 2, 0x08, 0x80 ;XOR A,(IY + d)
defb 0xB8, 0xF8, 0x00, 0x00, 1, [dasm__CP], [dasm__CP]>>8, 1, 0x07 ;CP A,r / CP A, (HL)
defb 0xFE, 0xFF, 0x00, 0x00, 2, [dasm__CP], [dasm__CP]>>8, 1, 0x08 ;CP A,n
defb 0xDD, 0xFF, 0xBE, 0xFF, 3, [dasm_DD_BE], [dasm_DD_BE]>>8, 2, 0x08, 0x80 ;CP A,(IX + d)
defb 0xFD, 0xFF, 0xBE, 0xFF, 3, [dasm_FD_BE], [dasm_FD_BE]>>8, 2, 0x08, 0x80 ;CP A,(IY + d)
defb 0x04, 0xC7, 0x00, 0x00, 1, [dasm__INC], [dasm__INC]>>8, 1, 0x10 ;INC r / INC (HL)
defb 0xDD, 0xFF, 0x34, 0xFF, 3, [dasm_DD_34], [dasm_DD_34]>>8, 2, 0x08, 0x80 ;INC (IX + d)
defb 0xFD, 0xFF, 0x34, 0xFF, 3, [dasm_FD_34], [dasm_FD_34]>>8, 2, 0x08, 0x80 ;INC (IY + d)
defb 0x05, 0xC7, 0x00, 0x00, 1, [dasm__DEC], [dasm__DEC]>>8, 1, 0x10 ;DEC r / DEC (HL)
defb 0xDD, 0xFF, 0x35, 0xFF, 3, [dasm_DD_35], [dasm_DD_35]>>8, 2, 0x08, 0x80 ;DEC (IX + d)
defb 0xFD, 0xFF, 0x35, 0xFF, 3, [dasm_FD_35], [dasm_FD_35]>>8, 2, 0x08, 0x80 ;DEC (IY + d)
;16-Bit Arithmetic Group
defb 0x09, 0xCF, 0x00, 0x00, 1, [dasm_09], [dasm_09]>>8, 1, 0x11 ;ADD HL, ss
defb 0xED, 0xFF, 0x4A, 0xCF, 2, [dasm_ED_4A], [dasm_ED_4A]>>8, 1, 0x12 ;ADC HL, ss
defb 0xED, 0xFF, 0x42, 0xCF, 2, [dasm_ED_42], [dasm_ED_42]>>8, 1, 0x12 ;SBC HL, ss
defb 0xDD, 0xFF, 0x09, 0xCF, 2, [dasm_DD_09], [dasm_DD_09]>>8, 1, 0x12 ;ADD IX, ss
defb 0xFD, 0xFF, 0x09, 0xCF, 2, [dasm_FD_09], [dasm_FD_09]>>8, 1, 0x12 ;ADD IY, ss
defb 0x03, 0xCF, 0x00, 0x00, 1, [dasm_03], [dasm_03]>>8, 1, 0x11 ;INC ss
defb 0xDD, 0xFF, 0x23, 0xFF, 2, [dasm_DD_23], [dasm_DD_23]>>8, 0 ;INC IX
defb 0xFD, 0xFF, 0x23, 0xFF, 2, [dasm_FD_23], [dasm_FD_23]>>8, 0 ;INC IY
defb 0x0B, 0xCF, 0x00, 0x00, 1, [dasm_0B], [dasm_0B]>>8, 1, 0x11 ;DEC ss
defb 0xDD, 0xFF, 0x2B, 0xFF, 2, [dasm_DD_2B], [dasm_DD_2B]>>8, 0 ;DEC IX
defb 0xFD, 0xFF, 0x2B, 0xFF, 2, [dasm_FD_2B], [dasm_FD_2B]>>8, 0 ;DEC IY
;16-Bit Load Group
defb 0x01, 0xCF, 0x00, 0x00, 3, [dasm_01], [dasm_01]>>8, 3, 0x11, 0x80, 0x09 ;LD dd, nn
defb 0xDD, 0xFF, 0x21, 0xFF, 4, [dasm_DD_01], [dasm_DD_01]>>8, 1, 0x0A ;LD IX, nn
defb 0xFD, 0xFF, 0x21, 0xFF, 4, [dasm_FD_01], [dasm_FD_01]>>8, 1, 0x0A ;LD IY, nn
defb 0x2A, 0xFF, 0x00, 0x00, 3, [dasm_2A], [dasm_2A]>>8, 2, 0x09, 0x80 ;LD HL, (nn)
defb 0xED, 0xFF, 0x4B, 0xCF, 4, [dasm_ED_4B], [dasm_ED_4B]>>8, 4, 0x12, 0x80, 0x0A, 0x81 ;LD dd, (nn)
defb 0xDD, 0xFF, 0x2A, 0xFF, 4, [dasm_DD_2A], [dasm_DD_2A]>>8, 1, 0x0A ;LD IX, (nn)
defb 0xFD, 0xFF, 0x2A, 0xFF, 4, [dasm_FD_2A], [dasm_FD_2A]>>8, 1, 0x0A ;LD IY, (nn)
defb 0x22, 0xFF, 0x00, 0x00, 3, [dasm_22], [dasm_22]>>8, 2, 0x0A, 0x80 ;LD (nn), HL
defb 0xED, 0xFF, 0x43, 0xCF, 4, [dasm_ED_43], [dasm_ED_43]>>8, 3, 0x0A, 0x80, 0x12 ;LD (nn), dd
defb 0xDD, 0xFF, 0x22, 0xCF, 4, [dasm_DD_22], [dasm_DD_22]>>8, 2, 0x0A, 0x80 ;LD (nn), IX
defb 0xFD, 0xFF, 0x22, 0xCF, 4, [dasm_FD_22], [dasm_FD_22]>>8, 2, 0x0A, 0x80 ;LD (nn), IY
defb 0xF9, 0xFF, 0x00, 0x00, 1, [dasm_F9], [dasm_F9]>>8, 0 ;LD SP, HL
defb 0xDD, 0xFF, 0xF9, 0xFF, 2, [dasm_DD_F9], [dasm_DD_F9]>>8, 0 ;LD SP, IX
defb 0xFD, 0xFF, 0xF9, 0xFF, 2, [dasm_FD_F9], [dasm_FD_F9]>>8, 0 ;LD SP, IY
defb 0xC5, 0xCF, 0x00, 0x00, 1, [dasm_E5], [dasm_E5]>>8, 1, 0x13 ;PUSH qq
defb 0xDD, 0xFF, 0xE5, 0xFF, 2, [dasm_DD_E5], [dasm_DD_E5]>>8, 0 ;PUSH IX
defb 0xFD, 0xFF, 0xE5, 0xFF, 2, [dasm_FD_E5], [dasm_FD_E5]>>8, 0 ;PUSH IY
defb 0xC1, 0xCF, 0x00, 0x00, 1, [dasm_E1], [dasm_E1]>>8, 1, 0x13 ;POP qq
defb 0xDD, 0xFF, 0xE1, 0xFF, 2, [dasm_DD_E1], [dasm_DD_E1]>>8, 0 ;POP IX
defb 0xFD, 0xFF, 0xE1, 0xFF, 2, [dasm_FD_E1], [dasm_FD_E1]>>8, 0 ;POP IY
dasm_00: db "NOP",0x00
;JUMP Group
dasm_C3: db "JP ",0x00,", ",0x00
dasm_18: db "JR ",0x00
dasm_38: db "JR C, ",0x00
dasm_30: db "JR NC, ",0x00
dasm_28: db "JR Z, ",0x00
dasm_20: db "JR NZ, ",0x00
dasm_E9: db "JP (HL) ",0x00
dasm_DD: db "JP (IX) ",0x00
dasm_FD: db "JP (IY) ",0x00
dasm_10: db "DJNZ ",0x00
;Call and Return Group
dasm_CD: db "CALL ",0x00
dasm_C9: db "RET ",0x00
dasm_ED_4D: db "RETI",0x00
dasm_ED_45: db "RETN",0x00
dasm_FF: db "RST ",0x00
;8-Bit load group
dasm_0A: db "LD A,(BC)",0x00
dasm_1A: db "LD A,(DE)",0x00
dasm_3A: db "LD A,(",0x00, "h)",0x00
dasm_02: db "LD (BC), A",0x00
dasm_12: db "LD (DE), A",0x00
dasm_32: db "LD (",0x00, "h), A",0x00
dasm__LD: db "LD ",0x00
dasm__ED_57: db "LD A, I",0x00
dasm__ED_5F: db "LD A, R",0x00
dasm__ED_47: db "LD I, A",0x00
dasm__ED_4F: db "LD R, A",0x00
;General-Purpose Arithmetic and CPU Control Groups
dasm_27: db "DAA",0x00
dasm_2F: db "CPL",0x00
dasm_ED_44: db "NEG",0x00
dasm_3F: db "CCF",0x00
dasm_37: db "SCF",0x00
dasm_76: db "HALT",0x00
dasm_F3: db "DI",0x00
dasm_FB: db "EI",0x00
dasm_ED_46: db "IM 0",0x00
dasm_ED_56: db "IM 1",0x00
dasm_ED_5E: db "IM 2",0x00
;Exchange, Block Transfer, and Search Group
dasm_BE: db "EX DE, HL",0x00
dasm_08: db "EX AF, AF",0x00
dasm_D9: db "EXX",0x00
dasm_E3: db "EX (SP), HL",0x00
dasm_DD_E3: db "EX (SP), IX",0x00
dasm_FD_E3: db "EX (SP), IY",0x00
dasm_ED_A0: db "LDI",0x00
dasm_ED_B0: db "LDIR",0x00
dasm_ED_A8: db "LDD",0x00
dasm_ED_B8: db "LDDR",0x00
dasm_ED_A1: db "CPI",0x00
dasm_ED_B1: db "CPIR",0x00
dasm_ED_A9: db "CPD",0x00
dasm_ED_B9: db "CPDR",0x00
;8-Bit Arithmetic Group
dasm_80C6: db "ADD A, ", 0x00
dasm_DD_86: db "ADD A, (IX+", 0x00, "h)",0x00
dasm_FD_86: db "ADD A, (IY+", 0x00, "h)",0x00
dasm_C88E: db "ADC A, ", 0x00
dasm_DD_8E: db "ADC A, (IX+", 0x00, "h)",0x00
dasm_FD_8E: db "ADC A, (IY+", 0x00, "h)",0x00
dasm__SUB: db "SUB ", 0x00
dasm_DD_96: db "SUB (IX+", 0x00, "h)",0x00
dasm_FD_96: db "SUB (IY+", 0x00, "h)",0x00
dasm__SBC: db "SBC A, ", 0x00
dasm_DD_9E: db "SBC A,(IX+", 0x00, "h)",0x00
dasm_FD_9E: db "SBC A,(IY+", 0x00, "h)",0x00
dasm__AND: db "AND ", 0x00
dasm_DD_A6: db "AND (IX+", 0x00, "h)",0x00
dasm_FD_A6: db "AND (IY+", 0x00, "h)",0x00
dasm__OR: db "OR ", 0x00
dasm_DD_B6: db "OR (IX+", 0x00, "h)",0x00
dasm_FD_B6: db "OR (IY+", 0x00, "h)",0x00
dasm__XOR: db "XOR ", 0x00
dasm_DD_AE: db "XOR (IX+", 0x00, "h)",0x00
dasm_FD_AE: db "XOR (IY+", 0x00, "h)",0x00
dasm__CP: db "CP ", 0x00
dasm_DD_BE: db "CP (IX+", 0x00, "h)",0x00
dasm_FD_BE: db "CP (IY+", 0x00, "h)",0x00
dasm__INC: db "INC ", 0x00
dasm_DD_34: db "INC (IX+", 0x00, "h)",0x00
dasm_FD_34: db "INC (IY+", 0x00, "h)",0x00
dasm__DEC: db "DEC ", 0x00
dasm_DD_35: db "DEC (IX+", 0x00, "h)",0x00
dasm_FD_35: db "DEC (IY+", 0x00, "h)",0x00
;16-Bit Arithmetic Group
dasm_09: db "ADD HL, ",0x00
dasm_ED_4A: db "ADC HL, ",0x00
dasm_ED_42: db "SBC HL, ",0x00
dasm_DD_09: db "ADD IX, ",0x00
dasm_FD_09: db "ADD IY, ",0x00
dasm_03: db "INC ",0x00
dasm_DD_23: db "INC IX, ",0x00
dasm_FD_23: db "INC IY, ",0x00
dasm_0B: db "DEC ",0x00
dasm_DD_2B: db "DEC IX, ",0x00
dasm_FD_2B: db "DEC IY, ",0x00
;16-Bit Load Group
dasm_01: db "LD ",0x00, ", ",0x00
dasm_DD_01: db "LD IX, ",0x00
dasm_FD_01: db "LD IY, ",0x00
dasm_2A: db "LD HL, (",0x00,"h)",0x00
dasm_ED_4B: db "LD ",0x00,", (",0x00,"h)",0x00
dasm_DD_2A: db "LD IX, (",0x00,"h)",0x00
dasm_FD_2A: db "LD IY, (",0x00,"h)",0x00
dasm_22: db "LD (",0x00,"h), HL",0x00
dasm_ED_43: db "LD (",0x00,"h), ",0x00
dasm_DD_22: db "LD (",0x00,"h), IX",0x00
dasm_FD_22: db "LD (",0x00,"h), IY",0x00
dasm_F9: db "LD SP, HL",0x00
dasm_DD_F9: db "LD SP, IX",0x00
dasm_FD_F9: db "LD SP, IY",0x00
dasm_E5: db "PUSH ",0x00
dasm_DD_E5: db "PUSH IX",0x00
dasm_FD_E5: db "PUSH IY",0x00
dasm_E1: db "PUSH ",0x00
dasm_DD_E1: db "PUSH IX",0x00
dasm_FD_E1: db "PUSH IY",0x00
;Misc
dasm_UU: db ".?.",0x00
dasm_UW: db " ",0x00
dasm_printFlags_table:
db "NZ"
db "Z",0
db "NC"
db "C",0
db "PO"
db "PE"
db "P",0
db "M",0
dasm_printRegister8_table:
db "B"
db "C"
db "D"
db "E"
db "H"
db "L"
db "S" ;only 18 bit (SP)
db "P" ;only 18 bit (SP)
dasm_printRegisterIX_table:
db "BC"
db "DE"
db "IX"
db "SP"
dasm_printRegisterIY_table:
db "BC"
db "DE"
db "IY"
db "SP"
dasm_printRegisterSP_table:
db "BC"
db "DE"
db "HL"
db "AF"
dasm_printRegister8_table_HL:
db "(HL)", 0

View File

@@ -0,0 +1,158 @@
;----------------------------------------------------------------
;Keyboard input library for Z8C
;by Dennis Gunia (04/2022)
;----------------------------------------------------------------
var_ps2_extension equ var_ps2mem+4 ;extension code
var_ps2_shift equ var_ps2mem+5 ;shift down = 0xFF, up = 0x00
var_ps2_raw equ var_ps2mem+6 ;raw scan code
keybd_read:
xor a
ld (var_ps2_extension), a
call keybd_read_wait
cp 0xE0
jr z, keybd_read_extended ;handle extended scancodes
cp 0xE1
jr z, keybd_read_extended_E1 ;handle extended scancodes for stupid pause button ....
;else fall through to keybd_read_simple
keybd_read_simple:
cp 0xF0 ;check if break
jr z, keybd_read_break ;handle break code logic
cp 0x12
jr z, keybd_shift_down
cp 0x59
jr z, keybd_shift_down
;else process key
jr keybd_read_return
keybd_read_extended:
ld (var_ps2_extension), a ;store first byte to ram
call keybd_read_wait ;read key
cp 0xF0 ;check if break
jr z, keybd_read_break_extended ;handle break code logic
;else process key
jr keybd_read_return
keybd_read_extended_E1: ;pause key
call keybd_read_wait ;read realeased key
call keybd_read_wait ;read realeased key
call keybd_read_wait ;read realeased key
call keybd_read_wait ;read realeased key
call keybd_read_wait ;read realeased key
call keybd_read_wait ;read realeased key
;fall-thorugh for last byte
keybd_read_break_extended:
call keybd_read_wait ;read realeased key
jr keybd_read
keybd_read_break:
call keybd_read_wait ;read realeased key
cp 0x12
jr z, keybd_shift_up
cp 0x59
jr z, keybd_shift_up
jp keybd_read
keybd_read_return:
;a contains scan code
ret
keybd_shift_down:
ld a,0x01
ld (var_ps2_shift),a
jr keybd_read
keybd_shift_up:
xor a
ld (var_ps2_shift),a
jr keybd_read
;wait for keyboard input
keybd_read_wait:
call keyboard_read
jr z, keybd_read_wait ;read again if error
ret
keybd_read_ascii:
call keybd_read
;push af
;call print_a_hex
;pop af
ld ix, [keybd_lut] ;LUT base address
ld bc, 4 ;increments
ld d, a ;Load scancode into d
keybd_read_ascii_seekloop:
ld a, (ix) ;load scancode from table
or a ;test if scancode is 0x00 -> indicates end of list
jr z, keybd_read_ascii_notfound ;reached end of list wizhout match
cp d ;compare scancode
jr z, keybd_read_ascii_match ;found entry
add ix,bc
jr keybd_read_ascii_seekloop
keybd_read_ascii_match:
ld b,0
ld a, (var_ps2_shift) ;if shift offset+1
inc a ;add ofset for column1
ld c,a
add ix,bc ;add column address to row address
ld a,(ix)
ret
keybd_read_ascii_notfound:
jr keybd_read_ascii
keybd_lut:
defb 0x1C, "a", "A", "@"
defb 0x32, "b", "B", 0x00
defb 0x21, "c", "C", 0x00
defb 0x23, "d", "D", 0x00
defb 0x24, "e", "E", 0x00
defb 0x2B, "f", "F", 0x00
defb 0x34, "g", "G", 0x00
defb 0x33, "h", "H", 0x00
defb 0x43, "i", "I", 0x00
defb 0x3B, "j", "J", 0x00
defb 0x42, "k", "K", 0x00
defb 0x4B, "l", "L", 0x00
defb 0x3A, "m", "M", 0x00
defb 0x31, "n", "N", 0x00
defb 0x44, "o", "O", 0x00
defb 0x4D, "p", "P", 0x00
defb 0x15, "q", "Q", 0x00
defb 0x2D, "r", "R", 0x00
defb 0x1B, "s", "S", 0x00
defb 0x2C, "t", "T", 0x00
defb 0x3C, "u", "U", 0x00
defb 0x2A, "v", "V", 0x00
defb 0x1D, "w", "W", 0x00
defb 0x22, "x", "X", 0x00
defb 0x1A, "y", "Y", 0x00
defb 0x35, "z", "Z", 0x00
defb 0x45, "0", "=", "}"
defb 0x16, "1", "!", 0x00
defb 0x1E, "2", 0x22, 0x00
defb 0x26, "3", "3", 0x00
defb 0x25, "4", "$", 0x00
defb 0x2E, "5", "%", 0x00
defb 0x36, "6", "&", 0x00
defb 0x3D, "7", "/", "{"
defb 0x3E, "8", "(", "["
defb 0x46, "9", ")", "]"
defb 0x41, ",", ";", 0x00
defb 0x49, ".", ":", 0x00
defb 0x4A, "-", "_", 0x00
defb 0x5D, "#", "'", 0x00
defb 0x5B, "+", "*", "~"
defb 0x4E, "s", "?", 0x5C
defb 0x61, "<", ">", "|"
defb 0x5A, 13, 13, 13 ;enter
defb 0x66, 0x08, 0x08, 0x08 ;backspace
defb 0x29, " ", " ", 0x00 ;space
defb 0x00 ;end of LUT

View File

@@ -0,0 +1,16 @@
; a contains data
; bc destroied
; carry is set if odd, reset if even
calc_parity:
ld c,0 ;parity data
ld b,8 ;bit counter
calc_parity_loop:
rrca
jr nc,calc_parity_loop_2 ;if not zero then skip increment
inc c
calc_parity_loop_2:
djnz calc_parity_loop
ld a,c
rra ;carry is set to bit 0 of high-counter.
;if bit1 is set -> odd # of 1s else even # of 1s
ret

View File

@@ -0,0 +1,22 @@
EXEC_RST_08:
call print_char
ret
EXEC_RST_10:
push bc
push de
push hl
;call vdp_cursor_on
call read_char
push af
;call vdp_cursor_off
pop af
pop hl
pop de
pop bc
ret
EXEC_RST_18:
ld a,0
ret

View File

@@ -0,0 +1,96 @@
;----------------------------------------------------------------
;Keyboard interface driver for Z8C
;Controller used: vt82c42
;Datasheet: http://www.s100computers.com/My%20System%20Pages/MSDOS%20Board/vt82c42%20PC%20Keyboard%20conrtroller.pdf
;by Dennis Gunia (04/2022)
;----------------------------------------------------------------
;IO Ports
CS_VT82C42_DATA .EQU F0h
CS_VT82C42_CTRL .EQU F1h
keyboard_init_io: ;Subroutine for initializing keyboard controller
LD A, A7h ;Disable Mouse
OUT (CS_VT82C42_CTRL), A
LD A, ADh ;Disable Keyboard
OUT (CS_VT82C42_CTRL), A
_keyboard_init_flush_buffer:
IN A,(CS_VT82C42_DATA) ;Read buffer
IN A,(CS_VT82C42_CTRL) ;Read status byte
BIT 0,A ;Test if buffer is empty
JR Z, _keyboard_init_flush_buffer
;buffer is now flushed. Now set the Controller Configuration Byte
IN A,(CS_VT82C42_CTRL) ;Disable bits 0,1,6 (disablee IRQ and Translation)
AND 10111100
OUT (CS_VT82C42_CTRL),A
;Perform Controller Self Test
LD A, AAh
OUT (CS_VT82C42_CTRL), A
NOP
IN A,(CS_VT82C42_CTRL) ;Check results
CP 55h
JR NZ, keyboard_init_failed
;Perform Interface Tests
LD A, ABh
OUT (CS_VT82C42_CTRL), A
NOP
IN A,(CS_VT82C42_CTRL) ;Check results
CP 00h
JR NZ, _keyboard_init_failed
;Enable Devices
LD A,AEh
OUT (CS_VT82C42_CTRL), A
;Reset Devices
LD A,FFh
OUT (CS_VT82C42_DATA), A ;Send reset to keboard (0xFF command)
NOP
IN A,(CS_VT82C42_CTRL) ;Read status byte
BIT 0,A ;Test if buffer is empty -> no keyboard found
JP NZ, _keyboard_init_dev_missing
CP A, 0xFC
JR Z, _keyboard_init_okay ; 0xFC -> Success. Init done!
;Else device error
LD HL, [STR_keyboard_init_failed]
CALL print_str
HALT
_keyboard_init_failed:
LD HL, [STR_keyboard_init_err]
CALL print_str
HALT
_keyboard_init_dev_missing:
LD HL, [STR_keyboard_init_missing]
CALL print_str
HALT
_keyboard_init_okay:
LD HL, [STR_keyboard_init_okay]
CALL print_str
RET
;Keyboard IO functions
keyboard_read:
IN A,(CS_VT82C42_CTRL) ;Read status byte
BIT 0,A ;Test if buffer is empty
RET NZ ;Return if empty
IN A,(CS_VT82C42_DATA)
RET ;Return with data in A
keyboard_write:
PUSH AF
_keyboard_write_wait:
IN A,(CS_VT82C42_CTRL) ;Read status byte
BIT 1,A ;Test if buffer is full
JR Z, _keyboard_write_wait ;Wait if input buffer is full
POP AF
OUT (CS_VT82C42_DATA), A
RET
;Status message strings
STR_keyboard_init_okay:
.BYTE "PS/2 Keyboard initialized.",0
STR_keyboard_init_err:
.BYTE "PS/2 Controller error! System HALT!",0
STR_keyboard_init_failed:
.BYTE "PS/2 Keyboard error! System HALT!",0
STR_keyboard_init_missing:
.BYTE "PS/2 no keyboard found!",0

View File

@@ -0,0 +1,286 @@
;-------------------------------------------------------------------------
; Z80 XMODEM implementation by Dennis Gunia
; 2022 - www,dennisgunia.de
;
; important doc: https://web.mit.edu/6.115/www/amulet/xmodem.htm
; http://www.blunk-electronic.de/train-z/pdf/xymodem.pdf
;-------------------------------------------------------------------------
;Symbols
SYM_SOH equ 0x01
SYM_EOT equ 0x04
SYM_ACK equ 0x06
SYM_NAK equ 0x15
SYM_ETB equ 0x17
SYM_CAN equ 0x18
SYM_C equ 0x43
;Memory locations
MEM_VAR_BLOCK equ 0x40FB ;last block
MEM_VAR_TIMEA equ 0x40FC ;timer var (mills)
MEM_VAR_TIMER equ 0x40FE ;timer var (seconds)
MEM_INT_VEC_T equ 0x40FE ;interrupt vector table
MEM_LOC_LOAD equ 0x4400 ;load location for program
;XMODEM routine
xmodem_init:
call A_RTS_OFF
LD A,10100111b ; Init CTC Channel 3
OUT (CS_CTC_2),A
LD A,14 ; 1028.57Hz ISR
OUT (CS_CTC_2),A
LD A,00h ; Set CTC Ch3 Interrupt Vector
OUT (CS_CTC_0),A
;load int vector to ram
ld hl,xmodem_int ;CTC Ch3 INT routine
ld (0x4200 + 0x04),hl
;reset timer vars
ld hl,0x0000
ld (MEM_VAR_TIMEA),hl
ld (MEM_VAR_TIMER),hl
ld a,0x42 ; Set interrupt vector register
ld i,a
im 2 ; Z80 Interrupt mode
ld hl,MSG_START ; Print start banner
call print_str
ei ; Enable interrupts
; init done. Continue with xmodem_await_conn
call xmodem_wait
xmodem_await_conn: ;Wait for initial connection
ld a, SYM_C ;Send C to notify sender, that we want CRC
call xmodem_out
call xmodem_read_wait ;Read with timeout
jp c, xmodem_await_conn ;Carry flag set = timeout -> repeat
;else continue
xmodem_packet: ;XmodemCRC packet start
;use 1st byte to decide further processing
cp SYM_EOT ;End of Transmission
jp z, xmodem_packet_EOT
cp SYM_CAN ;Cancel (Force receiver to start sending C's)
jp z, xmodem_await_conn
cp SYM_SOH ;Start of
jp z, xmodem_packet_get
jp xmodem_err ;anything else is an error -> abort transmission
xmodem_packet_get: ;if first byte == SYM_SOH -> receive block
call xmodem_read_wait ;get byte 2 => block ID
jp c, xmodem_nak
ld b,a
ld (MEM_VAR_BLOCK), a ;store block id to memory
call xmodem_read_wait ;get byte 3 => block ID complement
jp c, xmodem_nak
add b
cp 255 ;both size infos should always sum to 255
jp nz,xmodem_err ;if not 255 then its an error
;calculate block start address in RAM
;multiply by 128
;use more efficient bit-wise operations
dec a ;a-1 to remove 1 sector offset
ld a,b
rra ;shift 1 bit to the right
and 0x7F
ld h,a
ld a,b
dec a ;a-1 to remove 1 sector offset
rrca ;shift bit0 to bit 7
and 0x80 ;mask out all other bits
ld l,a
;result:
;hl = 0aaaaaaa a000000
ld de,MEM_LOC_LOAD
add hl,de ;add calculated offset to base address
;hl now contains the true start address of this sector
ld b,128 ;preload counter for data baytes
ld c,0 ;packet length counter ( used for overflow error )
xmodem_packet_get_data: ;get 128 data bytes (loop)
push hl ;push hl onto stack because xmodem_read_wait destroys hl
call xmodem_read_wait ;read byte or timeout
jp c, xmodem_nak ;if timeout -> nak and retry
pop hl ;restore hl
ld (hl), a ;store received byte in memory
inc hl ;increment pointer
inc c ;increment packet length counter
dec b ;decerment data bytes remmaining
jp nz, xmodem_packet_get_data ;if bytes remaining, loop
;else continue with crc bytes
xmodem_packet_get_crc: ;get 16-Bit CRC
call xmodem_read_wait
jp c, xmodem_nak
ld d,a
inc c
call xmodem_read_wait
jp c, xmodem_nak
ld e,a
inc c
;de now contains CRC value
;check if c is not bigger than 130 byte (128 data + 2crc)
;TODO if so NACK
;de contains 16-bit CRC
;TODO if crc error NACK
jp xmodem_ack ;ack block -> then jump to start again
xmodem_packet_EOT: ;End of transmission SUB.
ld a, SYM_ACK ;Acknowledge EOT
call xmodem_out
jp xmodem_end ;and end xmodem
xmodem_err: ;non recoverable error -> abort
ld a, SYM_CAN
call xmodem_out
ld a, SYM_CAN
call xmodem_out
ld a, SYM_CAN
call xmodem_out
ld a, SYM_CAN
call xmodem_out
ld a, SYM_CAN
call xmodem_out
ld a, SYM_CAN
call xmodem_out
ld a, SYM_CAN
call xmodem_out
ld a, SYM_CAN
call xmodem_out
ld a, SYM_CAN
call xmodem_out
ld a, SYM_CAN
call xmodem_out
ld a, SYM_CAN
ld hl, MSG_ERROR
call print_str
;overflow to end
xmodem_end:
di ;disable interrupts
call print_newLine ;print new line
jp PROMPT_BEGIN ;return ti prompt
;isr is used as counter for timeouts
xmodem_int:
di ;setup ISR (disable further interrupts, exchange registers)
ex AF,AF'
exx
ld hl,(MEM_VAR_TIMEA) ;millis counter
inc hl
ld (MEM_VAR_TIMEA),hl
ld de,1028 ;every 1028 millis counter
sbc hl,de
jp nz, xmodem_int_cont ;if less than 1028 millis, loop
ld hl,0 ;reset millis
ld (MEM_VAR_TIMEA),hl
ld hl,(MEM_VAR_TIMER) ;incement seconds
inc hl
ld (MEM_VAR_TIMER),hl
xmodem_int_cont: ;end isr
ex AF,AF' ;restore registers
exx
EI ;enable interrupts
reti ;exit ISR
; A returns char
; Carry is set if timeout
xmodem_read_timeount equ 3 ;3 seconds timeout
xmodem_read_wait:
di
ld hl,0
ld (MEM_VAR_TIMEA),hl
ld (MEM_VAR_TIMER),hl
ei
call A_RTS_ON
xmodem_read_wait_loop:
;check timeout
ld hl,(MEM_VAR_TIMER)
ld a, l
cp xmodem_read_timeount
jp z, xmodem_read_wait_timeout ;if timeout retry
; if no timeout
xor a ; a = 0
out (CS_SIO_A_C), a ; select reg 0
in a, (CS_SIO_A_C) ; read reg 0
and 1 ; mask D0 (recieve char available)
jp Z,xmodem_read_wait_loop ; wait if no char
; if char avail
in a, (CS_SIO_A_D) ; read char
;call debug_a_hex
push af
call A_RTS_OFF
pop af
scf
ccf
ret ; return
xmodem_read_wait_timeout:
scf
ret
xmodem_out:
out (CS_SIO_A_D), a
call xmodem_wait_out
ret
xmodem_wait_out:
sub a ;clear a, write into WR0: select RR0
inc a ;select RR1
out (CS_SIO_A_C),A
in A,(CS_SIO_A_C) ;read RRx
bit 0,A
jr z,xmodem_wait_out
ret
MSG_ERROR:
db "Error: unexpected byte",13,10,0
MSG_START:
db "Await xmodem connection",13,10,0
xmodem_ack: ;ack routine. Only use when expecting transmission afterwards.
ld a, SYM_ACK ;send ACK
call xmodem_out
call xmodem_read_wait ;wait for response
jp c, xmodem_ack ;if timeout repeat
jp xmodem_packet ;if received, continue with new packet
xmodem_nak: ;nak routine. Only use when expecting transmission afterwards.
ld a, SYM_NAK ;send NAK
call xmodem_out
call xmodem_read_wait ;wait for response
jp c, xmodem_nak ;if timeout repeat
jp xmodem_packet ;if received, continue with new packet
xmodem_wait:
ld hl, 0xFF
ld bc, 0x01
xmodem_wait_1:
nop
nop
nop
nop
sbc hl,bc
ret Z
jr xmodem_wait_1

View File

@@ -0,0 +1,489 @@
SYS_RAM_START equ 0x4000
SYS_BUF_START equ 0x4010
PRG_RAM_START equ 0x4110
PRG_RAM_TOP equ 0xFF00
STACK_RAM_TOP equ 0xFFFF
;VAR_CONSOLE_CONF equ 0x07 ;CLK/TRG Clock @ 1843220.5/s
VAR_CONSOLE_CONF equ 0x0F ;CPU/16 Clock @ 230402.5625/s
VAR_CONSOLE_BAUD equ 24 ;BAUD timer constant
;CLK/TRG Clock @ 1843220.5/s
; -> 0x16 : 14400
;CPU/16 Clock @ 230402.5625/s
; -> 12 : 19200
; -> 24 : 9600
; include IO device addresses
.include "addresses.s"
org 0x0000
RST_00: ;Hardware Restart
jp mon_start_init_sound
org 0x0008
RST_08 ;Print Char
jp EXEC_RST_08
org 0x0010
RST_10 ;receive char
jp EXEC_RST_10
org 0x0018
RST_18 ;Buffer length
jp EXEC_RST_18
INT_VEC:
org 0x0044
;DEFW EXEC_INT_VDP
;memory var template
mon_var_template:
phase SYS_RAM_START
var_buffer_len:
defb 0
var_last_char:
defb 0
var_curserx:
defb 0
var_cursery:
defb 0
var_curserstate:
defb 0
var_curseron:
defb 0
var_curserchar:
defb 0
var_curserlastaddr:
defw 0
var_scratch:
defs 16 ;16 bytes space for scratch vars
var_ps2mem:
defs 16 ;16 bytes space for scratch vars
var_buffer:
defb 0 ;var lentgh
mon_var_template_end:
dephase
;end memory var template
org 0x0050
mon_start_init_sound:
;CALL BTLDR_ENTRY ;call bootloader first
;ld D,0x08 ; Select register #8
;ld A,0x00 ; Volume channel A 0
;call AY0_WRITE_REG
;ld D,0x09 ; Select register #9
;ld A,0x00 ; Volume channel B 0
;call AY0_WRITE_REG
;ld D,0x0A ; Select register #10
;ld A,0x00 ; Volume channel C 0
;call AY0_WRITE_REG
mon_start_init_ctc:
ld sp, 0xffff
; Set CTC Ch2 Interrupt Vector
;LD A,40h ; it vector defined in bit 7­3,bit 2­1 don't care, bit 0 = 0
;OUT (IO_CTC0_C0),A
; Init CTC Channel 2
;LD A,10100111b
;OUT (IO_CTC0_C2),A
;LD A,0x34 ; 55Hz ISR
;LD A,0xFF ; 55Hz ISR
;OUT (IO_CTC0_C2),A
xor a
;ld i, a
;im 2 ;set int mode 2
ld (var_curserstate),a
ld (var_curseron),a
ld a, " "
ld (var_curserchar),a
;ei ; Enable Interrupts
;jr mon_start_ram ;skip serial, cause not used atm
mon_start_init_serial:
call CONSOLE_INIT
mon_start_ram:
ld hl,mon_var_template
ld de,mon_var_template_end
ld bc,SYS_RAM_START
mon_start_ram_loop:
ld a,(hl) ;copy values
ld (bc),a
inc hl
inc bc
push hl ;check if end is reached
sbc hl,de
pop hl
jp nz, mon_start_ram_loop
;template copy done
mon_start_complete:
;call keyboard_init_io
;call vdpconsole_init
;call print_str
;jp splash_run
;jp ps2demo_run
;call debug_init
;call vdp_cursor_on
;jp COLD
call print_clear
ld hl, [STR_Banner_Start]
call print_str
;halt
;call vdp_cursor_on
call PROMPT_BEGIN
;halt CPU if prompt exits
halt
; Misc Functions
AY0_WRITE_REG:
LD B,A
LD A,D
OUT (IO_AY0_ADDR),A
LD A,B
OUT (IO_AY0_DATA),A
RET
PROMPT_BEGIN:
call print_newLine
;call A_RTS_ON
ld a,'>'
call print_char
xor a ;reset buffer len
ld (var_buffer_len),a
PROMPT_BEGIN_READ_LOOP:
call read_char
;call keybd_read_ascii
jp z, PROMPT_BEGIN_READ_LOOP ; wait until char avail
push af
pop af
; process special ops
cp 13 ; enter
jp z,PROMPT_BEGIN_READ_PROCESS
cp 10
jp z, PROMPT_BEGIN_READ_LOOP; skip LF for file load
cp 0x08 ; backspace 0x08 VT102 0x7f Putty
jp z,PROMPT_BEGIN_READ_BACKSPACE
push af
; a contains latest char
ld hl,[var_buffer]
ld d,0
ld a,(var_buffer_len)
ld e,a
add hl,de ;hl now contains pointer to last position in buffer
inc a
ld (var_buffer_len),a ;store incremented buffer length
pop af
ld (hl),a
call print_char
inc hl
xor a ;a = 0
ld (hl),a ;always add null termination after last char
jp PROMPT_BEGIN_READ_LOOP
PROMPT_BEGIN_READ_BACKSPACE:
ld a,(var_buffer_len)
and a
jp z, PROMPT_BEGIN_READ_LOOP ; do not continue if already at char 0
dec a ;decrement length
ld (var_buffer_len),a ;and store it
ld e,a ;load de with decremented value
ld d,0
ld hl,[var_buffer]
add hl,de ;hl now contains pointer to last position in buffer
xor a ; store null byte to current location
ld (hl),a
;call print_delete
ld a, 0x08
call print_char
ld a, 0x20
call print_char
ld a, 0x08
call print_char
jp PROMPT_BEGIN_READ_LOOP
PROMPT_BEGIN_READ_PROCESS:
;call print_newLine
;ld hl,var_buffer
;call print_str
ld a,([var_buffer])
cp '$' ;jump to addr
jp z, CMD_EXEC
cp '?' ;print hexdump
jp z, CMD_VIEW
cp '!' ;set memory
jp z, CMD_SET
cp 'i' ;in IO
jp z, CMD_IO_READ
cp 'o' ;out IO
jp z, CMD_IO_WRITE
cp 'd' ;disassemble
jp z, CMD_DASM
cp 'x' ;start xmodem
jp z, xmodem_init
call print_newLine
ld hl, [STR_Unknown]
call print_str
jp PROMPT_BEGIN
ret
CMD_EXEC:
xor a ;write null byte to buffer pos 0 to prevent reexecute the last command
ld (var_buffer),a
ld hl,var_buffer+1 ;load 1st byte
call DHEX_TO_BYTE
ld b,a ;store result in b
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
ld hl,var_buffer+3 ;load 2nd byte
call DHEX_TO_BYTE
ld c,a
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
ld h,b
ld l,c
jp (hl)
CMD_VIEW:
call print_newLine
ld hl,var_buffer+1 ;load 1st byte
call DHEX_TO_BYTE
ld b,a ;store result in b
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
ld hl,var_buffer+3 ;load 2nd byte
call DHEX_TO_BYTE
ld c,a
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
ld a,(var_buffer+5)
cp ' '
jp nz, CMD_SYNTAX_ERROR
ld hl,var_buffer+6 ;load length
call DHEX_TO_BYTE
push af
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
;draw header
ld hl,[STR_HEXDUMP_HEADER]
call print_str
pop af
;loading vars done. display results
ld h, b ;pointer to current byte
ld l, c ;pointer to current byte
ld b, a ;bytes counter
;draw row
CMD_VIEW_ROW:
call print_newLine
ld a,h ;print start
call print_a_hex
ld a,l
call print_a_hex
ld a, ' '
call print_char
ld c, 8 ;column counter
CMD_VIEW_ROW_LOOP:
ld a,(hl)
call print_a_hex
inc hl ;increment pointer
dec b ;decrement byte counter
dec c ;decrement column counter
ld a,b
and a
jp z,CMD_VIEW_END ;if byte counter = 0 -> end reached
ld a,c
and a
jp z,CMD_VIEW_ROW ;else if column counter = 0 -> 16 chars printed. next row
ld a, ' '
call print_char
jp CMD_VIEW_ROW_LOOP ;else
CMD_VIEW_END:
call print_newLine
jp PROMPT_BEGIN
CMD_SET:
ld hl,var_buffer+1 ;load 1st byte
call DHEX_TO_BYTE
ld b,a ;store result in b
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
ld hl,var_buffer+3 ;load 2nd byte
call DHEX_TO_BYTE
ld c,a
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
;bc now contains the start address
ld hl,var_buffer+5
CMD_SET_LOOP:
ld a,(hl)
cp 0 ;if 0 then end
jp z, CMD_SET_END
cp ' '
jp nz, CMD_SYNTAX_ERROR
inc hl ;next byte
call DHEX_TO_BYTE
ld (bc),a ;load byte to
ld a,e
and a
jp nz, CMD_SYNTAX_ERROR
inc bc
inc hl
inc hl
jp CMD_SET_LOOP
CMD_SET_END:
call print_newLine
jp PROMPT_BEGIN
CMD_IO_WRITE:
ld hl,var_buffer+1 ;load 1st byte
call DHEX_TO_BYTE
ld c,a ;store result in b
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
ld a,(var_buffer+3)
cp ' '
jp nz, CMD_SYNTAX_ERROR
ld hl,var_buffer+4 ;load 1st byte
call DHEX_TO_BYTE
push af
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
pop af
out (c),a
call print_newLine
jp PROMPT_BEGIN
CMD_IO_READ:
ld hl,var_buffer+1 ;load 1st byte
call DHEX_TO_BYTE
ld c,a ;store result in b
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
in a,(c)
push af
call print_newLine
pop af
call print_a_hex
call print_newLine
jp PROMPT_BEGIN
CMD_DASM:
call print_newLine
ld hl,var_buffer+1 ;load 1st byte
call DHEX_TO_BYTE
ld b,a ;store result in b
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
ld hl,var_buffer+3 ;load 2nd byte
call DHEX_TO_BYTE
ld c,a
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
ld a,(var_buffer+5)
cp ' '
jp nz, CMD_SYNTAX_ERROR
ld hl,var_buffer+6 ;load length
call DHEX_TO_BYTE
push af
ld a,e ;check for error
and a
jp nz, CMD_SYNTAX_ERROR
ld h,b
ld l,c
pop af ;restore af
ld b,a
call disassemble
jp PROMPT_BEGIN
CMD_SYNTAX_ERROR:
call print_newLine
ld hl, [STR_SyntaxError]
call print_str
jp PROMPT_BEGIN
Includes:
;.include "bootldr.s"
.include "console.s"
.include "conversions.s"
;.include "basic.s"
.include "disassembler.s"
.include "disassembler_table.s"
.include "rst.s"
; Strings
STR_Banner_Start:
db "Z8C Monitor V2 by Dennis Gunia (2022)",0
STR_SyntaxError:
db "syn?",0
STR_Unknown:
db "cmd?",0
STR_HEXDUMP_HEADER:
db 'BASE 0 1 2 3 4 5 6 7',0
.include "xmodem.s"
;.include "debug.s"

View File

@@ -0,0 +1,55 @@
# Z8C Monitor V2
Monitor V2 is a less bloated monitor for my Z80 homebrew computer
## System
* Z80 CPU @ 3.686411MHz
* 48k Ram
* TMS9918 VDP (not used for normal operations)
* 2x AY3-8901
* Serial RS232 Ports
not implemented yet but already present in hardware:
* PS/2 Keyboard Interface
* RTC72421B real time clock
planned
* IDE interface
* 28J60 10Mbit ethernet interface
* dual joystick gameports
## Terminal
* `baud`: 19200
* `mode`: 8N1
* `parity`: none
* `temrinal`: vt102
* `flow`: none / RTS(not implemented yet)
## Commands
### View memory content
`?<addr> <len>`
* `addr`: word in hex -> start address of hexdump
* `len`: byte in hex -> length of hexdump
### Write memory content
`!<addr> <byte>,<byte>,...`
* `addr`: word in hex -> start address
* `byte`: byte in hex followed by space -> bytes to write to memory
### Run program
`$<addr>`
* `addr`: word in hex -> start address of program
### X-Modem
`x<addr>`
* `addr`: word in hex -> start address of recieved binary (at least 0x0420)
### Write IO port
`w<addr> <data>`
* `addr`: byte in hex -> IO port address
* `len`: byte in hex -> data
### Read IO port
`r<addr>`
* `addr`: byte in hex -> IO port address

View File

@@ -0,0 +1,5 @@
export OPT_GEN_SYMBOLTABLE=1
export OPT_GEN_MONFILE=0
export OPT_GEN_OBJFILE=1
export OPT_WRITEROM=1
export FILENAME=main

Binary file not shown.

View File

@@ -0,0 +1,271 @@
:03000000C35000EA
:03000800C3B60E6E
:03001000C3BA0E62
:03001800C3C60E4E
:1000440000000000000000000000000000000000AC
:10005400000000000000000000000000000000009C
:0A0064000000000000000000000092
:1000500031FFFFAF3204403205403E20320640CD32
:100060007002214400112A400100407E022303E572
:10007000ED52E1C26B00CDBC0221C90ECDB102CD63
:100080008B0076477AD34078D341C9CDC3023E3E38
:10009000CDA902AF320040CDEA02CA9700F5F1FEC9
:1000A0000DCAEE00FE0ACA9700FE08CAC800F52174
:1000B000294016003A00405F193C320040F177CDEC
:1000C000A90223AF77C397003A0040A7CA97003D23
:1000D0003200405F160021294019AF773E08CDA9B4
:1000E000023E20CDA9023E08CDA902C397003A29BD
:1000F00040FE24CA2101FE3FCA4001FE21CAAA01D6
:10010000FE69CA0F02FE6FCAE601FE64CA2B02FE38
:1001100078CA150FCDC30221F40ECDB102C38B00F6
:10012000C9AF322940212A40CD1603477BA7C264BC
:1001300002212C40CD16034F7BA7C264026069E9FF
:10014000CDC302212A40CD1603477BA7C2640221FA
:100150002C40CD16034F7BA7C264023A2E40FE20EE
:10016000C26402212F40CD1603F57BA7C264022191
:10017000F90ECDB102F1606947CDC3027CCDD90241
:100180007DCDD9023E20CDA9020E087ECDD9022315
:10019000050D78A7CAA40179A7CA79013E20CDA987
:1001A00002C38B01CDC302C38B00212A40CD1603AD
:1001B000477BA7C26402212C40CD16034F7BA7C208
:1001C0006402212E407EFE00CAE001FE20C26402CD
:1001D00023CD1603027BA7C26402032323C3C501F8
:1001E000CDC302C38B00212A40CD16034F7BA7C28B
:1001F00064023A2C40FE20C26402212D40CD160339
:10020000F57BA7C26402F1ED79CDC302C38B002157
:100210002A40CD16034F7BA7C26402ED78F5CDC30B
:1002200002F1CDD902CDC302C38B00CDC302212A76
:1002300040CD1603477BA7C26402212C40CD160394
:100240004F7BA7C264023A2E40FE20C26402212FD7
:1002500040CD1603F57BA7C264026069F147CD6704
:1002600003C38B00CDC30221EF0ECDB102C38B00BF
:100270003E4FD304DB01D3043E30D3093E18D309EB
:100280003E04D3093E44D3093E05D3093EE8D309D1
:100290003E01D3093E04D3093E02D3093E00D309EF
:1002A0003E03D3093EC1D309C9F5D308CDCE02F12F
:1002B000C97EB72806CDA9022318F6C921FC02CDB4
:1002C000B102C93E0ACDA9023E0DCDA902C9973C93
:1002D000D309DB09CB4728F6C9F5C5D5CD4D037841
:1002E000CDA90279CDA902D1C1F1CD0D0300AFD3C3
:1002F00009DB09E601CD0403C8DB08C91B5B324AF0
:100300001B5B48003E05D3093E68D309C93E05D3AF
:10031000093EEAD309C9E57ECD36033815CB27CB94
:1003200027CB27CB2757237ECD36033805B2E11ED6
:1003300000C91EFFE1C9D630EA4B03FE0A3805D6D4
:1003400007EA4B03FE103003E60FC937C9F51F1F3C
:100350001F1FCD5C0347F1CD5C034FC9E60FC630CC
:10036000FE3AD8C607C9C978321A412210417E32F6
:100370001441237E3215412BCD5B0478B1CA3D0474
:10038000ED431241030303030A321641030A5F03DC
:100390000A57ED531741030A3219412A1041CDA3E0
:1003A000043A1641472A10417ECDD9022310F93E66
:1003B00068CDA9023A1641473E0690473E20CDA996
:1003C000023E20CDA90210F43E20CDA902E52A1755
:1003D00041CDB1023A1941B7CA3A042A1241010883
:1003E00000093A1941477EFE01CCC904FE02CCF057
:1003F00004FE03CC0D05FE04CC4905FE05CC5F05CB
:10040000FE06CC6C05FE07CC8605FE08CC9305FEE7
:1004100009CCA805FE10CCBD05FE11CCCD05FE1201
:10042000CCD505FE13CC0D06FE0ACC9F05FE80CC74
:100430002C06FE81CC23062310ACE11810CDA304BA
:100440007ECDBB0423E521780ECDB102E1CDC30200
:100450003A1A413D321A41C26B03C9E52176063A88
:1004600014414F7EFEFFCA9D04F523462B79A04F11
:10047000F1B9280B06000E07097E4F092318E02367
:10048000234E233A154146A0B92B2B2B280B0600EF
:100490000E07097E4F092318C6444DE1C906000E18
:1004A00000E1C93E24CDA9027CCDD9027DCDD9027F
:1004B0003E68CDA9023E20CDA902C9CDD9023E6831
:1004C000CDA9023E20CDA902C9E5ED5B1041131A6A
:1004D0006F131A673E24CDA9027CCDD9027DCDD9F8
:1004E000023E68CDA9023E20CDA902CD6706E1C932
:1004F000C5ED5B10411A1F1FE60EE521810E0600B7
:100500004F09CDB1023E20CDA902E1C1C9ED5B107A
:1005100041131AF5E680C22E053E24CDA9023E2BDA
:10052000CDA902F1CDD9023E68CDA90218173E240B
:10053000CDA9023E2DCDA902F1ED44CDD9023E68F0
:10054000CDA9021800CD6706C9ED5B1041131AFE54
:100550004D28063E4ECDA902C93E49CDA902C9C5C6
:10056000ED5B10411AE638CDBB04C1C9C5ED5B1087
:10057000411A1F1F1FE607CD42063E20CDA9023EAD
:100580002CCDA902C1C9C5ED5B10411AE607CD42C9
:1005900006C1C9C5ED5B1041131ACDBB04C1C9E545
:1005A000ED5B104113131806E5ED5B1041131A6F54
:1005B000131A677CCDD9027DCDD902E1C9C5ED5BA7
:1005C00010411A1F1F1FE607CD4206C1C9E5C5ED40
:1005D0005B10411807E5C5ED5B1041131A1F1F1F83
:1005E000E606F52A10417EFEDD2809FEFD280A21D7
:1005F000910E180821990E180321A10EF106004F43
:10060000097ECDA902237ECDA902C1E1C9E5C5EDD0
:100610005B10411A1F1F1FE606F52A10417E21A913
:100620000E18D9E5C52A174106021807E5C52A178D
:100630004106017E23A720FB05C23306CDB102C1CE
:10064000E1C9E5FE062811FE07281521910E0600D6
:100650004F097ECDA902E1C921B10ECDB102E1C998
:100660003E41CDA902E1C978FE01C83E20CDA902D4
:100670003E2CCDA902C900FF000001CE0A0027FFD1
:10068000000001990B002FFF0000019D0B00EDFF02
:1006900044FF02A10B003FFF000001A50B0037FF44
:1006A000000001A90B0076FF000001AD0B00F3FF75
:1006B000000001B20B00FBFF000001B50B00EDFFD5
:1006C00046FF02B80B00EDFF56FF02BD0B00EDFF29
:1006D0005EFF02C20B00EBFF000001C70B0008FF2A
:1006E000000001D10B00D9FF000001DE0B00E3FF89
:1006F000000001E20B00DDFFE3FF02EE0B00FDFF57
:10070000E3FF02FA0B00EDFFA0FF02060C00EDFF75
:10071000B0FF020A0C00EDFFA8FF020F0C00EDFF76
:10072000B8FF02130C00EDFFA1FF02180C00EDFF53
:10073000B1FF021C0C00EDFFA9FF02210C00EDFF30
:10074000B9FF02250C00C3FF000003D20A0101C259
:10075000C7000003D20A0302800118FF000002D97B
:100760000A010338FF000002DD0A010330FF000028
:1007700002E40A010328FF000002EC0A010320FF43
:10078000000002F30A0103E9FF000002FB0A00DD9A
:10079000FFE9FF02040B00FDFFE9FF020D0B001053
:1007A000FF000002160B0103CDFF0000031C0B012C
:1007B00001C4C70000031C0B020201C9FF000001B5
:1007C000220B00C0C7000001220B0102EDFF4DFF0C
:1007D00002270B00EDFF45FF022C0B00C7C70000EE
:1007E00001310B01050AFF000001360B001AFF0062
:1007F0000001400B003AFF0000034A0B020980028F
:10080000FF000001540B0012FF0000015F0B0032DB
:10081000FF0000036A0B020980EDFF57FF02790B0E
:1008200000EDFF5FFF02810B00EDFF47FF02890B28
:1008300000EDFF4FFF02910B0006C7000002750B91
:1008400002060840C0000001750B02060780F80090
:1008500000012A0C0107C6FF0000022A0C0108DD76
:10086000FF86FF03320C020880FDFF86FF03410C68
:10087000020880C8F8000001500C01078EF8000043
:1008800002500C0108DDFF8EFF03580C020880FDAA
:10089000FF8EFF03670C02088090F8000001760CC1
:1008A0000107D6FF000002760C0108DDFF96FF036A
:1008B0007B0C020880FDFF96FF03870C02088094E2
:1008C000F8000001930C0107DEFF000002930C0109
:1008D00008DDFF9EFF039B0C020880FDFF9EFF03C7
:1008E000A90C020880A0F8000001B70C0107E6FF80
:1008F000000002B70C0108DDFFA6FF03BC0C0208D4
:1009000080FDFFA6FF03C80C020880B0F8000001BC
:10091000D40C0107F6FF000002D40C0108DDFFB67D
:10092000FF03D80C020880FDFFB6FF03E30C0208AA
:1009300080A8F8000001EE0C0107EEFF000002EEB7
:100940000C0108DDFFAEFF03F30C020880FDFFAED3
:10095000FF03FF0C020880B8F80000010B0D01072F
:10096000FEFF0000020B0D0108DDFFBEFF030F0DAF
:10097000020880FDFFBEFF031A0D02088004C700B5
:100980000001250D0110DDFF34FF032A0D02088050
:10099000FDFF34FF03360D02088005C70000014249
:1009A0000D0110DDFF35FF03470D020880FDFF3507
:1009B000FF03530D02088009CF0000015F0D0111F4
:1009C000EDFF4ACF02680D0112EDFF42CF02710D1B
:1009D0000112DDFF09CF027A0D0112FDFF09CF02DE
:1009E000830D011203CF0000018C0D0111DDFF23E7
:1009F000FF02910D00FDFF23FF029A0D000BCF00B7
:100A00000001A30D0111DDFF2BFF02A80D00FDFF6A
:100A10002BFF02B10D0001CF000003BA0D031180BE
:100A200009DDFF21FF04C10D010AFDFF21FF04C9FB
:100A30000D010A2AFF000003D10D020980EDFF4BD2
:100A4000CF04DD0D0412800A81DDFF2AFF04E80DCA
:100A5000010AFDFF2AFF04F40D010A22FF00000332
:100A6000000E020A80EDFF43CF040C0E030A801231
:100A7000DDFF22CF04160E020A80FDFF22CF0422E2
:100A80000E020A80F9FF0000012E0E00DDFFF9FFC3
:100A900002380E00FDFFF9FF02420E00C5CF000034
:100AA000014C0E0113DDFFE5FF02520E00FDFFE5D4
:100AB000FF025A0E00C1CF000001620E0113DDFFDC
:100AC000E1FF02680E00FDFFE1FF02700E004E4FD5
:100AD00050004A5020002C20004A5220004A522048
:100AE000432C20004A52204E432C20004A52205AC8
:100AF0002C20004A52204E5A2C20004A50202848D0
:100B00004C2920004A50202849582920004A5020CA
:100B1000284959292000444A4E5A200043414C4C50
:100B20002000524554200052455449005245544E2D
:100B30000052535420004C4420412C2842432900A9
:100B40004C4420412C28444529004C4420412C2869
:100B5000006829004C4420284243292C2041004CA5
:100B60004420284445292C2041004C44202800687A
:100B7000292C2041004C4420004C4420412C204989
:100B8000004C4420412C2052004C4420492C204150
:100B9000004C4420522C2041004441410043504C21
:100BA000004E454700434346005343460048414CEE
:100BB0005400444900454900494D203000494D202A
:100BC0003100494D20320045582044452C20484CE6
:100BD0000045582041462C204146E280B20045584D
:100BE0005800455820285350292C20484C0045587F
:100BF00020285350292C204958004558202853506C
:100C0000292C204959004C4449004C444952004C7D
:100C10004444004C4444520043504900435049521C
:100C20000043504400435044520041444420412C6E
:100C3000200041444420412C202849582B00682999
:100C40000041444420412C202849592B00682900A8
:100C500041444320412C200041444320412C202882
:100C600049582B0068290041444320412C20284941
:100C7000592B006829005355422000535542202823
:100C800049582B00682900535542202849592B0008
:100C900068290053424320412C2000534243204105
:100CA0002C2849582B0068290053424320412C2806
:100CB00049592B00682900414E442000414E4420F0
:100CC0002849582B00682900414E44202849592BB7
:100CD000006829004F5220004F52202849582B000D
:100CE0006829004F52202849592B00682900584F85
:100CF000522000584F52202849582B00682900588C
:100D00004F52202849592B006829004350200043A6
:100D100050202849582B0068290043502028495961
:100D20002B00682900494E432000494E43202849A2
:100D3000582B00682900494E43202849592B006848
:100D400029004445432000444543202849582B00AE
:100D5000682900444543202849592B00682900414F
:100D6000444420484C2C200041444320484C2C2033
:100D70000053424320484C2C200041444420495811
:100D80002C20004144442049592C2000494E432046
:100D900000494E432049582C2000494E43204959D0
:100DA0002C200044454320004445432049582C2032
:100DB000004445432049592C20004C4420002C205D
:100DC000004C442049582C20004C442049592C20E8
:100DD000004C4420484C2C2028006829004C44201A
:100DE000002C2028006829004C442049582C202839
:100DF000006829004C442049592C2028006829000B
:100E00004C4420280068292C20484C004C442028C1
:100E10000068292C20004C4420280068292C2049F7
:100E200058004C4420280068292C204959004C4483
:100E30002053502C20484C004C442053502C204927
:100E400058004C442053502C2049590050555348C9
:100E500020005055534820495800505553482049C8
:100E600059005055534820005055534820495800C8
:100E700050555348204959002E3F2E002020202055
:100E8000004E5A5A004E434300504F504550004DBB
:100E90000042434445484C5350424344454958530B
:100EA00050424344454959535042434445484C41BC
:100EB0004628484C2900CDA902C9C5D5E5CDEA028E
:100EC000F5F1E1D1C1C93E00C95A3843204D6F6EDA
:100ED00069746F722056322062792044656E6E69A3
:100EE000732047756E6961202832303232290073D1
:100EF000796E3F00636D643F0042415345203020CE
:100F00002031202032202033202034202035202082
:100F10003620203700CD04033EA7D3063E0ED3066D
:100F20003E00D30421F50F22044221000022FC40A0
:100F300022FE403E42ED47ED5E217010CDB102FB36
:100F4000CDA6103E43CD4610CD1910DA430FFE0456
:100F5000CAAC0FFE18CA430FFE01CA600FC3B40F1C
:100F6000CD1910DA98104732FB40CD1910DA9810DD
:100F700080FEFFC2B40F3D781FE67F67783D0FE625
:100F8000806F1100441906800E00E5CD1910DA9823
:100F900010E177230C05C28A0FCD1910DA9810578B
:100FA0000CCD1910DA98105F0CC38A103E06CD469E
:100FB00010C3EE0F3E18CD46103E18CD46103E1819
:100FC000CD46103E18CD46103E18CD46103E18CDE9
:100FD00046103E18CD46103E18CD46103E18CD4660
:100FE000103E18CD46103E18215710CDB102F3CD5A
:100FF000C302C38B00F308D92AFC402322FC401112
:101000000404ED52C2141021000022FC402AFE40CC
:101010002322FE4008D9FBED4DF321000022FC40C5
:1010200022FE40FBCD0D032AFE407DFE03CA441084
:10103000AFD309DB09E601CA2710DB08F5CD0403AD
:10104000F1373FC937C9D308CD4C10C9973CD309F4
:10105000DB09CB4728F6C94572726F723A20756E6C
:10106000657870656374656420627974650D0A0043
:10107000417761697420786D6F64656D20636F6E70
:101080006E656374696F6E0D0A003E06CD4610CD25
:101090001910DA8A10C34E0F3E15CD4610CD191027
:1010A000DA9810C34E0F21FF00010100000000007C
:0510B000ED42C818F735
:00000001FF

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,270 @@
!0000 C3 50 00
!0008 C3 B6 0E
!0010 C3 BA 0E
!0018 C3 C6 0E
!0044 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
!0054 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
!0064 00 00 00 00 00 00 00 00 00 00
!0050 31 FF FF AF 32 04 40 32 05 40 3E 20 32 06 40 CD
!0060 70 02 21 44 00 11 2A 40 01 00 40 7E 02 23 03 E5
!0070 ED 52 E1 C2 6B 00 CD BC 02 21 C9 0E CD B1 02 CD
!0080 8B 00 76 47 7A D3 40 78 D3 41 C9 CD C3 02 3E 3E
!0090 CD A9 02 AF 32 00 40 CD EA 02 CA 97 00 F5 F1 FE
!00A0 0D CA EE 00 FE 0A CA 97 00 FE 08 CA C8 00 F5 21
!00B0 29 40 16 00 3A 00 40 5F 19 3C 32 00 40 F1 77 CD
!00C0 A9 02 23 AF 77 C3 97 00 3A 00 40 A7 CA 97 00 3D
!00D0 32 00 40 5F 16 00 21 29 40 19 AF 77 3E 08 CD A9
!00E0 02 3E 20 CD A9 02 3E 08 CD A9 02 C3 97 00 3A 29
!00F0 40 FE 24 CA 21 01 FE 3F CA 40 01 FE 21 CA AA 01
!0100 FE 69 CA 0F 02 FE 6F CA E6 01 FE 64 CA 2B 02 FE
!0110 78 CA 15 0F CD C3 02 21 F4 0E CD B1 02 C3 8B 00
!0120 C9 AF 32 29 40 21 2A 40 CD 16 03 47 7B A7 C2 64
!0130 02 21 2C 40 CD 16 03 4F 7B A7 C2 64 02 60 69 E9
!0140 CD C3 02 21 2A 40 CD 16 03 47 7B A7 C2 64 02 21
!0150 2C 40 CD 16 03 4F 7B A7 C2 64 02 3A 2E 40 FE 20
!0160 C2 64 02 21 2F 40 CD 16 03 F5 7B A7 C2 64 02 21
!0170 F9 0E CD B1 02 F1 60 69 47 CD C3 02 7C CD D9 02
!0180 7D CD D9 02 3E 20 CD A9 02 0E 08 7E CD D9 02 23
!0190 05 0D 78 A7 CA A4 01 79 A7 CA 79 01 3E 20 CD A9
!01A0 02 C3 8B 01 CD C3 02 C3 8B 00 21 2A 40 CD 16 03
!01B0 47 7B A7 C2 64 02 21 2C 40 CD 16 03 4F 7B A7 C2
!01C0 64 02 21 2E 40 7E FE 00 CA E0 01 FE 20 C2 64 02
!01D0 23 CD 16 03 02 7B A7 C2 64 02 03 23 23 C3 C5 01
!01E0 CD C3 02 C3 8B 00 21 2A 40 CD 16 03 4F 7B A7 C2
!01F0 64 02 3A 2C 40 FE 20 C2 64 02 21 2D 40 CD 16 03
!0200 F5 7B A7 C2 64 02 F1 ED 79 CD C3 02 C3 8B 00 21
!0210 2A 40 CD 16 03 4F 7B A7 C2 64 02 ED 78 F5 CD C3
!0220 02 F1 CD D9 02 CD C3 02 C3 8B 00 CD C3 02 21 2A
!0230 40 CD 16 03 47 7B A7 C2 64 02 21 2C 40 CD 16 03
!0240 4F 7B A7 C2 64 02 3A 2E 40 FE 20 C2 64 02 21 2F
!0250 40 CD 16 03 F5 7B A7 C2 64 02 60 69 F1 47 CD 67
!0260 03 C3 8B 00 CD C3 02 21 EF 0E CD B1 02 C3 8B 00
!0270 3E 4F D3 04 DB 01 D3 04 3E 30 D3 09 3E 18 D3 09
!0280 3E 04 D3 09 3E 44 D3 09 3E 05 D3 09 3E E8 D3 09
!0290 3E 01 D3 09 3E 04 D3 09 3E 02 D3 09 3E 00 D3 09
!02A0 3E 03 D3 09 3E C1 D3 09 C9 F5 D3 08 CD CE 02 F1
!02B0 C9 7E B7 28 06 CD A9 02 23 18 F6 C9 21 FC 02 CD
!02C0 B1 02 C9 3E 0A CD A9 02 3E 0D CD A9 02 C9 97 3C
!02D0 D3 09 DB 09 CB 47 28 F6 C9 F5 C5 D5 CD 4D 03 78
!02E0 CD A9 02 79 CD A9 02 D1 C1 F1 CD 0D 03 00 AF D3
!02F0 09 DB 09 E6 01 CD 04 03 C8 DB 08 C9 1B 5B 32 4A
!0300 1B 5B 48 00 3E 05 D3 09 3E 68 D3 09 C9 3E 05 D3
!0310 09 3E EA D3 09 C9 E5 7E CD 36 03 38 15 CB 27 CB
!0320 27 CB 27 CB 27 57 23 7E CD 36 03 38 05 B2 E1 1E
!0330 00 C9 1E FF E1 C9 D6 30 EA 4B 03 FE 0A 38 05 D6
!0340 07 EA 4B 03 FE 10 30 03 E6 0F C9 37 C9 F5 1F 1F
!0350 1F 1F CD 5C 03 47 F1 CD 5C 03 4F C9 E6 0F C6 30
!0360 FE 3A D8 C6 07 C9 C9 78 32 1A 41 22 10 41 7E 32
!0370 14 41 23 7E 32 15 41 2B CD 5B 04 78 B1 CA 3D 04
!0380 ED 43 12 41 03 03 03 03 0A 32 16 41 03 0A 5F 03
!0390 0A 57 ED 53 17 41 03 0A 32 19 41 2A 10 41 CD A3
!03A0 04 3A 16 41 47 2A 10 41 7E CD D9 02 23 10 F9 3E
!03B0 68 CD A9 02 3A 16 41 47 3E 06 90 47 3E 20 CD A9
!03C0 02 3E 20 CD A9 02 10 F4 3E 20 CD A9 02 E5 2A 17
!03D0 41 CD B1 02 3A 19 41 B7 CA 3A 04 2A 12 41 01 08
!03E0 00 09 3A 19 41 47 7E FE 01 CC C9 04 FE 02 CC F0
!03F0 04 FE 03 CC 0D 05 FE 04 CC 49 05 FE 05 CC 5F 05
!0400 FE 06 CC 6C 05 FE 07 CC 86 05 FE 08 CC 93 05 FE
!0410 09 CC A8 05 FE 10 CC BD 05 FE 11 CC CD 05 FE 12
!0420 CC D5 05 FE 13 CC 0D 06 FE 0A CC 9F 05 FE 80 CC
!0430 2C 06 FE 81 CC 23 06 23 10 AC E1 18 10 CD A3 04
!0440 7E CD BB 04 23 E5 21 78 0E CD B1 02 E1 CD C3 02
!0450 3A 1A 41 3D 32 1A 41 C2 6B 03 C9 E5 21 76 06 3A
!0460 14 41 4F 7E FE FF CA 9D 04 F5 23 46 2B 79 A0 4F
!0470 F1 B9 28 0B 06 00 0E 07 09 7E 4F 09 23 18 E0 23
!0480 23 4E 23 3A 15 41 46 A0 B9 2B 2B 2B 28 0B 06 00
!0490 0E 07 09 7E 4F 09 23 18 C6 44 4D E1 C9 06 00 0E
!04A0 00 E1 C9 3E 24 CD A9 02 7C CD D9 02 7D CD D9 02
!04B0 3E 68 CD A9 02 3E 20 CD A9 02 C9 CD D9 02 3E 68
!04C0 CD A9 02 3E 20 CD A9 02 C9 E5 ED 5B 10 41 13 1A
!04D0 6F 13 1A 67 3E 24 CD A9 02 7C CD D9 02 7D CD D9
!04E0 02 3E 68 CD A9 02 3E 20 CD A9 02 CD 67 06 E1 C9
!04F0 C5 ED 5B 10 41 1A 1F 1F E6 0E E5 21 81 0E 06 00
!0500 4F 09 CD B1 02 3E 20 CD A9 02 E1 C1 C9 ED 5B 10
!0510 41 13 1A F5 E6 80 C2 2E 05 3E 24 CD A9 02 3E 2B
!0520 CD A9 02 F1 CD D9 02 3E 68 CD A9 02 18 17 3E 24
!0530 CD A9 02 3E 2D CD A9 02 F1 ED 44 CD D9 02 3E 68
!0540 CD A9 02 18 00 CD 67 06 C9 ED 5B 10 41 13 1A FE
!0550 4D 28 06 3E 4E CD A9 02 C9 3E 49 CD A9 02 C9 C5
!0560 ED 5B 10 41 1A E6 38 CD BB 04 C1 C9 C5 ED 5B 10
!0570 41 1A 1F 1F 1F E6 07 CD 42 06 3E 20 CD A9 02 3E
!0580 2C CD A9 02 C1 C9 C5 ED 5B 10 41 1A E6 07 CD 42
!0590 06 C1 C9 C5 ED 5B 10 41 13 1A CD BB 04 C1 C9 E5
!05A0 ED 5B 10 41 13 13 18 06 E5 ED 5B 10 41 13 1A 6F
!05B0 13 1A 67 7C CD D9 02 7D CD D9 02 E1 C9 C5 ED 5B
!05C0 10 41 1A 1F 1F 1F E6 07 CD 42 06 C1 C9 E5 C5 ED
!05D0 5B 10 41 18 07 E5 C5 ED 5B 10 41 13 1A 1F 1F 1F
!05E0 E6 06 F5 2A 10 41 7E FE DD 28 09 FE FD 28 0A 21
!05F0 91 0E 18 08 21 99 0E 18 03 21 A1 0E F1 06 00 4F
!0600 09 7E CD A9 02 23 7E CD A9 02 C1 E1 C9 E5 C5 ED
!0610 5B 10 41 1A 1F 1F 1F E6 06 F5 2A 10 41 7E 21 A9
!0620 0E 18 D9 E5 C5 2A 17 41 06 02 18 07 E5 C5 2A 17
!0630 41 06 01 7E 23 A7 20 FB 05 C2 33 06 CD B1 02 C1
!0640 E1 C9 E5 FE 06 28 11 FE 07 28 15 21 91 0E 06 00
!0650 4F 09 7E CD A9 02 E1 C9 21 B1 0E CD B1 02 E1 C9
!0660 3E 41 CD A9 02 E1 C9 78 FE 01 C8 3E 20 CD A9 02
!0670 3E 2C CD A9 02 C9 00 FF 00 00 01 CE 0A 00 27 FF
!0680 00 00 01 99 0B 00 2F FF 00 00 01 9D 0B 00 ED FF
!0690 44 FF 02 A1 0B 00 3F FF 00 00 01 A5 0B 00 37 FF
!06A0 00 00 01 A9 0B 00 76 FF 00 00 01 AD 0B 00 F3 FF
!06B0 00 00 01 B2 0B 00 FB FF 00 00 01 B5 0B 00 ED FF
!06C0 46 FF 02 B8 0B 00 ED FF 56 FF 02 BD 0B 00 ED FF
!06D0 5E FF 02 C2 0B 00 EB FF 00 00 01 C7 0B 00 08 FF
!06E0 00 00 01 D1 0B 00 D9 FF 00 00 01 DE 0B 00 E3 FF
!06F0 00 00 01 E2 0B 00 DD FF E3 FF 02 EE 0B 00 FD FF
!0700 E3 FF 02 FA 0B 00 ED FF A0 FF 02 06 0C 00 ED FF
!0710 B0 FF 02 0A 0C 00 ED FF A8 FF 02 0F 0C 00 ED FF
!0720 B8 FF 02 13 0C 00 ED FF A1 FF 02 18 0C 00 ED FF
!0730 B1 FF 02 1C 0C 00 ED FF A9 FF 02 21 0C 00 ED FF
!0740 B9 FF 02 25 0C 00 C3 FF 00 00 03 D2 0A 01 01 C2
!0750 C7 00 00 03 D2 0A 03 02 80 01 18 FF 00 00 02 D9
!0760 0A 01 03 38 FF 00 00 02 DD 0A 01 03 30 FF 00 00
!0770 02 E4 0A 01 03 28 FF 00 00 02 EC 0A 01 03 20 FF
!0780 00 00 02 F3 0A 01 03 E9 FF 00 00 02 FB 0A 00 DD
!0790 FF E9 FF 02 04 0B 00 FD FF E9 FF 02 0D 0B 00 10
!07A0 FF 00 00 02 16 0B 01 03 CD FF 00 00 03 1C 0B 01
!07B0 01 C4 C7 00 00 03 1C 0B 02 02 01 C9 FF 00 00 01
!07C0 22 0B 00 C0 C7 00 00 01 22 0B 01 02 ED FF 4D FF
!07D0 02 27 0B 00 ED FF 45 FF 02 2C 0B 00 C7 C7 00 00
!07E0 01 31 0B 01 05 0A FF 00 00 01 36 0B 00 1A FF 00
!07F0 00 01 40 0B 00 3A FF 00 00 03 4A 0B 02 09 80 02
!0800 FF 00 00 01 54 0B 00 12 FF 00 00 01 5F 0B 00 32
!0810 FF 00 00 03 6A 0B 02 09 80 ED FF 57 FF 02 79 0B
!0820 00 ED FF 5F FF 02 81 0B 00 ED FF 47 FF 02 89 0B
!0830 00 ED FF 4F FF 02 91 0B 00 06 C7 00 00 02 75 0B
!0840 02 06 08 40 C0 00 00 01 75 0B 02 06 07 80 F8 00
!0850 00 01 2A 0C 01 07 C6 FF 00 00 02 2A 0C 01 08 DD
!0860 FF 86 FF 03 32 0C 02 08 80 FD FF 86 FF 03 41 0C
!0870 02 08 80 C8 F8 00 00 01 50 0C 01 07 8E F8 00 00
!0880 02 50 0C 01 08 DD FF 8E FF 03 58 0C 02 08 80 FD
!0890 FF 8E FF 03 67 0C 02 08 80 90 F8 00 00 01 76 0C
!08A0 01 07 D6 FF 00 00 02 76 0C 01 08 DD FF 96 FF 03
!08B0 7B 0C 02 08 80 FD FF 96 FF 03 87 0C 02 08 80 94
!08C0 F8 00 00 01 93 0C 01 07 DE FF 00 00 02 93 0C 01
!08D0 08 DD FF 9E FF 03 9B 0C 02 08 80 FD FF 9E FF 03
!08E0 A9 0C 02 08 80 A0 F8 00 00 01 B7 0C 01 07 E6 FF
!08F0 00 00 02 B7 0C 01 08 DD FF A6 FF 03 BC 0C 02 08
!0900 80 FD FF A6 FF 03 C8 0C 02 08 80 B0 F8 00 00 01
!0910 D4 0C 01 07 F6 FF 00 00 02 D4 0C 01 08 DD FF B6
!0920 FF 03 D8 0C 02 08 80 FD FF B6 FF 03 E3 0C 02 08
!0930 80 A8 F8 00 00 01 EE 0C 01 07 EE FF 00 00 02 EE
!0940 0C 01 08 DD FF AE FF 03 F3 0C 02 08 80 FD FF AE
!0950 FF 03 FF 0C 02 08 80 B8 F8 00 00 01 0B 0D 01 07
!0960 FE FF 00 00 02 0B 0D 01 08 DD FF BE FF 03 0F 0D
!0970 02 08 80 FD FF BE FF 03 1A 0D 02 08 80 04 C7 00
!0980 00 01 25 0D 01 10 DD FF 34 FF 03 2A 0D 02 08 80
!0990 FD FF 34 FF 03 36 0D 02 08 80 05 C7 00 00 01 42
!09A0 0D 01 10 DD FF 35 FF 03 47 0D 02 08 80 FD FF 35
!09B0 FF 03 53 0D 02 08 80 09 CF 00 00 01 5F 0D 01 11
!09C0 ED FF 4A CF 02 68 0D 01 12 ED FF 42 CF 02 71 0D
!09D0 01 12 DD FF 09 CF 02 7A 0D 01 12 FD FF 09 CF 02
!09E0 83 0D 01 12 03 CF 00 00 01 8C 0D 01 11 DD FF 23
!09F0 FF 02 91 0D 00 FD FF 23 FF 02 9A 0D 00 0B CF 00
!0A00 00 01 A3 0D 01 11 DD FF 2B FF 02 A8 0D 00 FD FF
!0A10 2B FF 02 B1 0D 00 01 CF 00 00 03 BA 0D 03 11 80
!0A20 09 DD FF 21 FF 04 C1 0D 01 0A FD FF 21 FF 04 C9
!0A30 0D 01 0A 2A FF 00 00 03 D1 0D 02 09 80 ED FF 4B
!0A40 CF 04 DD 0D 04 12 80 0A 81 DD FF 2A FF 04 E8 0D
!0A50 01 0A FD FF 2A FF 04 F4 0D 01 0A 22 FF 00 00 03
!0A60 00 0E 02 0A 80 ED FF 43 CF 04 0C 0E 03 0A 80 12
!0A70 DD FF 22 CF 04 16 0E 02 0A 80 FD FF 22 CF 04 22
!0A80 0E 02 0A 80 F9 FF 00 00 01 2E 0E 00 DD FF F9 FF
!0A90 02 38 0E 00 FD FF F9 FF 02 42 0E 00 C5 CF 00 00
!0AA0 01 4C 0E 01 13 DD FF E5 FF 02 52 0E 00 FD FF E5
!0AB0 FF 02 5A 0E 00 C1 CF 00 00 01 62 0E 01 13 DD FF
!0AC0 E1 FF 02 68 0E 00 FD FF E1 FF 02 70 0E 00 4E 4F
!0AD0 50 00 4A 50 20 00 2C 20 00 4A 52 20 00 4A 52 20
!0AE0 43 2C 20 00 4A 52 20 4E 43 2C 20 00 4A 52 20 5A
!0AF0 2C 20 00 4A 52 20 4E 5A 2C 20 00 4A 50 20 28 48
!0B00 4C 29 20 00 4A 50 20 28 49 58 29 20 00 4A 50 20
!0B10 28 49 59 29 20 00 44 4A 4E 5A 20 00 43 41 4C 4C
!0B20 20 00 52 45 54 20 00 52 45 54 49 00 52 45 54 4E
!0B30 00 52 53 54 20 00 4C 44 20 41 2C 28 42 43 29 00
!0B40 4C 44 20 41 2C 28 44 45 29 00 4C 44 20 41 2C 28
!0B50 00 68 29 00 4C 44 20 28 42 43 29 2C 20 41 00 4C
!0B60 44 20 28 44 45 29 2C 20 41 00 4C 44 20 28 00 68
!0B70 29 2C 20 41 00 4C 44 20 00 4C 44 20 41 2C 20 49
!0B80 00 4C 44 20 41 2C 20 52 00 4C 44 20 49 2C 20 41
!0B90 00 4C 44 20 52 2C 20 41 00 44 41 41 00 43 50 4C
!0BA0 00 4E 45 47 00 43 43 46 00 53 43 46 00 48 41 4C
!0BB0 54 00 44 49 00 45 49 00 49 4D 20 30 00 49 4D 20
!0BC0 31 00 49 4D 20 32 00 45 58 20 44 45 2C 20 48 4C
!0BD0 00 45 58 20 41 46 2C 20 41 46 E2 80 B2 00 45 58
!0BE0 58 00 45 58 20 28 53 50 29 2C 20 48 4C 00 45 58
!0BF0 20 28 53 50 29 2C 20 49 58 00 45 58 20 28 53 50
!0C00 29 2C 20 49 59 00 4C 44 49 00 4C 44 49 52 00 4C
!0C10 44 44 00 4C 44 44 52 00 43 50 49 00 43 50 49 52
!0C20 00 43 50 44 00 43 50 44 52 00 41 44 44 20 41 2C
!0C30 20 00 41 44 44 20 41 2C 20 28 49 58 2B 00 68 29
!0C40 00 41 44 44 20 41 2C 20 28 49 59 2B 00 68 29 00
!0C50 41 44 43 20 41 2C 20 00 41 44 43 20 41 2C 20 28
!0C60 49 58 2B 00 68 29 00 41 44 43 20 41 2C 20 28 49
!0C70 59 2B 00 68 29 00 53 55 42 20 00 53 55 42 20 28
!0C80 49 58 2B 00 68 29 00 53 55 42 20 28 49 59 2B 00
!0C90 68 29 00 53 42 43 20 41 2C 20 00 53 42 43 20 41
!0CA0 2C 28 49 58 2B 00 68 29 00 53 42 43 20 41 2C 28
!0CB0 49 59 2B 00 68 29 00 41 4E 44 20 00 41 4E 44 20
!0CC0 28 49 58 2B 00 68 29 00 41 4E 44 20 28 49 59 2B
!0CD0 00 68 29 00 4F 52 20 00 4F 52 20 28 49 58 2B 00
!0CE0 68 29 00 4F 52 20 28 49 59 2B 00 68 29 00 58 4F
!0CF0 52 20 00 58 4F 52 20 28 49 58 2B 00 68 29 00 58
!0D00 4F 52 20 28 49 59 2B 00 68 29 00 43 50 20 00 43
!0D10 50 20 28 49 58 2B 00 68 29 00 43 50 20 28 49 59
!0D20 2B 00 68 29 00 49 4E 43 20 00 49 4E 43 20 28 49
!0D30 58 2B 00 68 29 00 49 4E 43 20 28 49 59 2B 00 68
!0D40 29 00 44 45 43 20 00 44 45 43 20 28 49 58 2B 00
!0D50 68 29 00 44 45 43 20 28 49 59 2B 00 68 29 00 41
!0D60 44 44 20 48 4C 2C 20 00 41 44 43 20 48 4C 2C 20
!0D70 00 53 42 43 20 48 4C 2C 20 00 41 44 44 20 49 58
!0D80 2C 20 00 41 44 44 20 49 59 2C 20 00 49 4E 43 20
!0D90 00 49 4E 43 20 49 58 2C 20 00 49 4E 43 20 49 59
!0DA0 2C 20 00 44 45 43 20 00 44 45 43 20 49 58 2C 20
!0DB0 00 44 45 43 20 49 59 2C 20 00 4C 44 20 00 2C 20
!0DC0 00 4C 44 20 49 58 2C 20 00 4C 44 20 49 59 2C 20
!0DD0 00 4C 44 20 48 4C 2C 20 28 00 68 29 00 4C 44 20
!0DE0 00 2C 20 28 00 68 29 00 4C 44 20 49 58 2C 20 28
!0DF0 00 68 29 00 4C 44 20 49 59 2C 20 28 00 68 29 00
!0E00 4C 44 20 28 00 68 29 2C 20 48 4C 00 4C 44 20 28
!0E10 00 68 29 2C 20 00 4C 44 20 28 00 68 29 2C 20 49
!0E20 58 00 4C 44 20 28 00 68 29 2C 20 49 59 00 4C 44
!0E30 20 53 50 2C 20 48 4C 00 4C 44 20 53 50 2C 20 49
!0E40 58 00 4C 44 20 53 50 2C 20 49 59 00 50 55 53 48
!0E50 20 00 50 55 53 48 20 49 58 00 50 55 53 48 20 49
!0E60 59 00 50 55 53 48 20 00 50 55 53 48 20 49 58 00
!0E70 50 55 53 48 20 49 59 00 2E 3F 2E 00 20 20 20 20
!0E80 00 4E 5A 5A 00 4E 43 43 00 50 4F 50 45 50 00 4D
!0E90 00 42 43 44 45 48 4C 53 50 42 43 44 45 49 58 53
!0EA0 50 42 43 44 45 49 59 53 50 42 43 44 45 48 4C 41
!0EB0 46 28 48 4C 29 00 CD A9 02 C9 C5 D5 E5 CD EA 02
!0EC0 F5 F1 E1 D1 C1 C9 3E 00 C9 5A 38 43 20 4D 6F 6E
!0ED0 69 74 6F 72 20 56 32 20 62 79 20 44 65 6E 6E 69
!0EE0 73 20 47 75 6E 69 61 20 28 32 30 32 32 29 00 73
!0EF0 79 6E 3F 00 63 6D 64 3F 00 42 41 53 45 20 30 20
!0F00 20 31 20 20 32 20 20 33 20 20 34 20 20 35 20 20
!0F10 36 20 20 37 00 CD 04 03 3E A7 D3 06 3E 0E D3 06
!0F20 3E 00 D3 04 21 F5 0F 22 04 42 21 00 00 22 FC 40
!0F30 22 FE 40 3E 42 ED 47 ED 5E 21 70 10 CD B1 02 FB
!0F40 CD A6 10 3E 43 CD 46 10 CD 19 10 DA 43 0F FE 04
!0F50 CA AC 0F FE 18 CA 43 0F FE 01 CA 60 0F C3 B4 0F
!0F60 CD 19 10 DA 98 10 47 32 FB 40 CD 19 10 DA 98 10
!0F70 80 FE FF C2 B4 0F 3D 78 1F E6 7F 67 78 3D 0F E6
!0F80 80 6F 11 00 44 19 06 80 0E 00 E5 CD 19 10 DA 98
!0F90 10 E1 77 23 0C 05 C2 8A 0F CD 19 10 DA 98 10 57
!0FA0 0C CD 19 10 DA 98 10 5F 0C C3 8A 10 3E 06 CD 46
!0FB0 10 C3 EE 0F 3E 18 CD 46 10 3E 18 CD 46 10 3E 18
!0FC0 CD 46 10 3E 18 CD 46 10 3E 18 CD 46 10 3E 18 CD
!0FD0 46 10 3E 18 CD 46 10 3E 18 CD 46 10 3E 18 CD 46
!0FE0 10 3E 18 CD 46 10 3E 18 21 57 10 CD B1 02 F3 CD
!0FF0 C3 02 C3 8B 00 F3 08 D9 2A FC 40 23 22 FC 40 11
!1000 04 04 ED 52 C2 14 10 21 00 00 22 FC 40 2A FE 40
!1010 23 22 FE 40 08 D9 FB ED 4D F3 21 00 00 22 FC 40
!1020 22 FE 40 FB CD 0D 03 2A FE 40 7D FE 03 CA 44 10
!1030 AF D3 09 DB 09 E6 01 CA 27 10 DB 08 F5 CD 04 03
!1040 F1 37 3F C9 37 C9 D3 08 CD 4C 10 C9 97 3C D3 09
!1050 DB 09 CB 47 28 F6 C9 45 72 72 6F 72 3A 20 75 6E
!1060 65 78 70 65 63 74 65 64 20 62 79 74 65 0D 0A 00
!1070 41 77 61 69 74 20 78 6D 6F 64 65 6D 20 63 6F 6E
!1080 6E 65 63 74 69 6F 6E 0D 0A 00 3E 06 CD 46 10 CD
!1090 19 10 DA 8A 10 C3 4E 0F 3E 15 CD 46 10 CD 19 10
!10A0 DA 98 10 C3 4E 0F 21 FF 00 01 01 00 00 00 00 00
!10B0 ED 42 C8 18 F7

View File

@@ -0,0 +1,263 @@
;This file is generated by the build script.
;Do not make any changes here!
AY0_WRITE_REG equ 0x83
A_RTS_OFF equ 0x304
A_RTS_ON equ 0x30D
CMD_DASM equ 0x22B
CMD_EXEC equ 0x121
CMD_IO_READ equ 0x20F
CMD_IO_WRITE equ 0x1E6
CMD_SET equ 0x1AA
CMD_SET_END equ 0x1E0
CMD_SET_LOOP equ 0x1C5
CMD_SYNTAX_ERROR equ 0x264
CMD_VIEW equ 0x140
CMD_VIEW_END equ 0x1A4
CMD_VIEW_ROW equ 0x179
CMD_VIEW_ROW_LOOP equ 0x18B
CONSOLE_INIT equ 0x270
CONSOLE_INIT_CTC equ 0x270
CONSOLE_INIT_SIO equ 0x278
DHEX_TO_BYTE equ 0x316
DHEX_TO_BYTE_FAILED equ 0x332
EXEC_RST_08 equ 0xEB6
EXEC_RST_10 equ 0xEBA
EXEC_RST_18 equ 0xEC6
HEX_TO_BIN equ 0x336
HEX_TO_BIN_2 equ 0x344
HEX_TO_INVALID_2 equ 0x34B
INT_VEC equ 0x1B
Includes equ 0x270
MSG_CLEAR equ 0x2FC
MSG_ERROR equ 0x1057
MSG_START equ 0x1070
PROMPT_BEGIN equ 0x8B
PROMPT_BEGIN_READ_BACKSPACE equ 0xC8
PROMPT_BEGIN_READ_LOOP equ 0x97
PROMPT_BEGIN_READ_PROCESS equ 0xEE
RST_00 equ 0x00
RST_08 equ 0x08
RST_10 equ 0x10
RST_18 equ 0x18
STRCONV_BYTES_TO_HEX equ 0x34D
STRCONV_BYTES_TO_HEX_1 equ 0x35C
STRCONV_BYTES_TO_HEX_2 equ 0x366
STR_Banner_Start equ 0xEC9
STR_HEXDUMP_HEADER equ 0xEF9
STR_SyntaxError equ 0xEEF
STR_Unknown equ 0xEF4
dasm_00 equ 0xACE
dasm_01 equ 0xDBA
dasm_02 equ 0xB54
dasm_03 equ 0xD8C
dasm_08 equ 0xBD1
dasm_09 equ 0xD5F
dasm_0A equ 0xB36
dasm_0B equ 0xDA3
dasm_10 equ 0xB16
dasm_12 equ 0xB5F
dasm_18 equ 0xAD9
dasm_1A equ 0xB40
dasm_20 equ 0xAF3
dasm_22 equ 0xE00
dasm_27 equ 0xB99
dasm_28 equ 0xAEC
dasm_2A equ 0xDD1
dasm_2F equ 0xB9D
dasm_30 equ 0xAE4
dasm_32 equ 0xB6A
dasm_37 equ 0xBA9
dasm_38 equ 0xADD
dasm_3A equ 0xB4A
dasm_3F equ 0xBA5
dasm_76 equ 0xBAD
dasm_80C6 equ 0xC2A
dasm_BE equ 0xBC7
dasm_C3 equ 0xAD2
dasm_C88E equ 0xC50
dasm_C9 equ 0xB22
dasm_CD equ 0xB1C
dasm_D9 equ 0xBDE
dasm_DD equ 0xB04
dasm_DD_01 equ 0xDC1
dasm_DD_09 equ 0xD7A
dasm_DD_22 equ 0xE16
dasm_DD_23 equ 0xD91
dasm_DD_2A equ 0xDE8
dasm_DD_2B equ 0xDA8
dasm_DD_34 equ 0xD2A
dasm_DD_35 equ 0xD47
dasm_DD_86 equ 0xC32
dasm_DD_8E equ 0xC58
dasm_DD_96 equ 0xC7B
dasm_DD_9E equ 0xC9B
dasm_DD_A6 equ 0xCBC
dasm_DD_AE equ 0xCF3
dasm_DD_B6 equ 0xCD8
dasm_DD_BE equ 0xD0F
dasm_DD_E1 equ 0xE68
dasm_DD_E3 equ 0xBEE
dasm_DD_E5 equ 0xE52
dasm_DD_F9 equ 0xE38
dasm_E1 equ 0xE62
dasm_E3 equ 0xBE2
dasm_E5 equ 0xE4C
dasm_E9 equ 0xAFB
dasm_ED_42 equ 0xD71
dasm_ED_43 equ 0xE0C
dasm_ED_44 equ 0xBA1
dasm_ED_45 equ 0xB2C
dasm_ED_46 equ 0xBB8
dasm_ED_4A equ 0xD68
dasm_ED_4B equ 0xDDD
dasm_ED_4D equ 0xB27
dasm_ED_56 equ 0xBBD
dasm_ED_5E equ 0xBC2
dasm_ED_A0 equ 0xC06
dasm_ED_A1 equ 0xC18
dasm_ED_A8 equ 0xC0F
dasm_ED_A9 equ 0xC21
dasm_ED_B0 equ 0xC0A
dasm_ED_B1 equ 0xC1C
dasm_ED_B8 equ 0xC13
dasm_ED_B9 equ 0xC25
dasm_F3 equ 0xBB2
dasm_F9 equ 0xE2E
dasm_FB equ 0xBB5
dasm_FD equ 0xB0D
dasm_FD_01 equ 0xDC9
dasm_FD_09 equ 0xD83
dasm_FD_22 equ 0xE22
dasm_FD_23 equ 0xD9A
dasm_FD_2A equ 0xDF4
dasm_FD_2B equ 0xDB1
dasm_FD_34 equ 0xD36
dasm_FD_35 equ 0xD53
dasm_FD_86 equ 0xC41
dasm_FD_8E equ 0xC67
dasm_FD_96 equ 0xC87
dasm_FD_9E equ 0xCA9
dasm_FD_A6 equ 0xCC8
dasm_FD_AE equ 0xCFF
dasm_FD_B6 equ 0xCE3
dasm_FD_BE equ 0xD1A
dasm_FD_E1 equ 0xE70
dasm_FD_E3 equ 0xBFA
dasm_FD_E5 equ 0xE5A
dasm_FD_F9 equ 0xE42
dasm_FF equ 0xB31
dasm_UU equ 0xE78
dasm_UW equ 0xE7C
dasm__AND equ 0xCB7
dasm__CP equ 0xD0B
dasm__DEC equ 0xD42
dasm__ED_47 equ 0xB89
dasm__ED_4F equ 0xB91
dasm__ED_57 equ 0xB79
dasm__ED_5F equ 0xB81
dasm__INC equ 0xD25
dasm__LD equ 0xB75
dasm__OR equ 0xCD4
dasm__SBC equ 0xC93
dasm__SUB equ 0xC76
dasm__XOR equ 0xCEE
dasm_opcode_table equ 0x676
dasm_print16hex_addr equ 0x4A3
dasm_print8hex equ 0x4BB
dasm_printFlags_table equ 0xE81
dasm_printRegister8_table equ 0xE91
dasm_printRegister8_table_HL equ 0xEB1
dasm_printRegisterIX_table equ 0xE99
dasm_printRegisterIY_table equ 0xEA1
dasm_printRegisterSP_table equ 0xEA9
disassemble equ 0x367
disassemble_continue equ 0x44D
disassemble_err equ 0x43D
disassemble_next equ 0x36B
disassemble_print_opcode_params_end equ 0x43A
disassemble_print_opcode_params_loop equ 0x3E6
disassemble_print_opcode_raw equ 0x3A8
disassemble_print_opcode_raw_fill equ 0x3BC
disassemble_table_first_match equ 0x47F
disassemble_table_found equ 0x499
disassemble_table_notfound equ 0x49D
disassemble_table_seek equ 0x45B
disassemble_table_seek_loop equ 0x45F
mon_start_complete equ 0x76
mon_start_init_ctc equ 0x50
mon_start_init_serial equ 0x5F
mon_start_init_sound equ 0x50
mon_start_ram equ 0x62
mon_start_ram_loop equ 0x6B
mon_var_template equ 0x44
mon_var_template_end equ 0x402A
param_01 equ 0x4C9
param_02 equ 0x4F0
param_03 equ 0x50D
param_03_done equ 0x545
param_03_neg equ 0x52E
param_04 equ 0x549
param_04_i equ 0x559
param_05 equ 0x55F
param_06 equ 0x56C
param_07 equ 0x586
param_08 equ 0x593
param_09 equ 0x5A8
param_09_0A equ 0x5AE
param_0A equ 0x59F
param_10 equ 0x5BD
param_11 equ 0x5CD
param_11_12 equ 0x5DC
param_11_12_all equ 0x5FC
param_11_12_def equ 0x5EF
param_11_12_ix equ 0x5F4
param_11_12_iy equ 0x5F9
param_12 equ 0x5D5
param_13 equ 0x60D
param_80 equ 0x62C
param_80_seek equ 0x633
param_81 equ 0x623
param_comma equ 0x667
param_printRegister equ 0x642
param_printRegisterA equ 0x660
param_printRegisterHL equ 0x658
print_a_hex equ 0x2D9
print_char equ 0x2A9
print_clear equ 0x2BC
print_newLine equ 0x2C3
print_str equ 0x2B1
print_str_end equ 0x2BB
print_wait_out equ 0x2CE
read_char equ 0x2EA
var_buffer equ 0x4029
var_buffer_len equ 0x4000
var_curserchar equ 0x4006
var_curserlastaddr equ 0x4007
var_curseron equ 0x4005
var_curserstate equ 0x4004
var_curserx equ 0x4002
var_cursery equ 0x4003
var_last_char equ 0x4001
var_ps2mem equ 0x4019
var_scratch equ 0x4009
xmodem_ack equ 0x108A
xmodem_await_conn equ 0xF43
xmodem_end equ 0xFEE
xmodem_err equ 0xFB4
xmodem_init equ 0xF15
xmodem_int equ 0xFF5
xmodem_int_cont equ 0x1014
xmodem_nak equ 0x1098
xmodem_out equ 0x1046
xmodem_packet equ 0xF4E
xmodem_packet_EOT equ 0xFAC
xmodem_packet_get equ 0xF60
xmodem_packet_get_crc equ 0xF99
xmodem_packet_get_data equ 0xF8A
xmodem_read_wait equ 0x1019
xmodem_read_wait_loop equ 0x1027
xmodem_read_wait_timeout equ 0x1044
xmodem_wait equ 0x10A6
xmodem_wait_1 equ 0x10AC
xmodem_wait_out equ 0x104C

View File

@@ -0,0 +1 @@
../../monitor_v2/zout/symbols.s

View File

@@ -0,0 +1,5 @@
export OPT_GEN_SYMBOLTABLE=0
export OPT_GEN_MONFILE=1
export OPT_GEN_OBJFILE=1
export OPT_WRITEROM=0
export FILENAME=test

View File

@@ -0,0 +1,10 @@
.include "extern_symbols.s" ;include monitor symbols.
org 0x8000
LD A,4
LD B,5
ADD A,b
LD (0x8010),A
JP PROMPT_BEGIN

Binary file not shown.

View File

@@ -0,0 +1,2 @@
:0B8000003E04060580321080C38B0098
:00000001FF

View File

@@ -0,0 +1,549 @@
1: .include "extern_symbols.s" ;include monitor symbols.
**** include/extern_symbols.s ****
1: ;This file is generated by the build script.
2: ;Do not make any changes here!
3:
4: - 0083 AY0_WRITE_REG equ 0x83
5: - 0304 A_RTS_OFF equ 0x304
6: - 030D A_RTS_ON equ 0x30D
7: - 022B CMD_DASM equ 0x22B
8: - 0121 CMD_EXEC equ 0x121
9: - 020F CMD_IO_READ equ 0x20F
10: - 01E6 CMD_IO_WRITE equ 0x1E6
11: - 01AA CMD_SET equ 0x1AA
12: - 01E0 CMD_SET_END equ 0x1E0
13: - 01C5 CMD_SET_LOOP equ 0x1C5
14: - 0264 CMD_SYNTAX_ERROR equ 0x264
15: - 0140 CMD_VIEW equ 0x140
16: - 01A4 CMD_VIEW_END equ 0x1A4
17: - 0179 CMD_VIEW_ROW equ 0x179
18: - 018B CMD_VIEW_ROW_LOOP equ 0x18B
19: - 0270 CONSOLE_INIT equ 0x270
20: - 0270 CONSOLE_INIT_CTC equ 0x270
21: - 0278 CONSOLE_INIT_SIO equ 0x278
22: - 0316 DHEX_TO_BYTE equ 0x316
23: - 0332 DHEX_TO_BYTE_FAILED equ 0x332
24: - 0EB6 EXEC_RST_08 equ 0xEB6
25: - 0EBA EXEC_RST_10 equ 0xEBA
26: - 0EC6 EXEC_RST_18 equ 0xEC6
27: - 0336 HEX_TO_BIN equ 0x336
28: - 0344 HEX_TO_BIN_2 equ 0x344
29: - 034B HEX_TO_INVALID_2 equ 0x34B
30: - 001B INT_VEC equ 0x1B
31: - 0270 Includes equ 0x270
32: - 02FC MSG_CLEAR equ 0x2FC
33: - 1057 MSG_ERROR equ 0x1057
34: - 1070 MSG_START equ 0x1070
35: - 008B PROMPT_BEGIN equ 0x8B
36: - 00C8 PROMPT_BEGIN_READ_BACKSPACE equ 0xC8
37: - 0097 PROMPT_BEGIN_READ_LOOP equ 0x97
38: - 00EE PROMPT_BEGIN_READ_PROCESS equ 0xEE
39: - 0000 RST_00 equ 0x00
40: - 0008 RST_08 equ 0x08
41: - 0010 RST_10 equ 0x10
42: - 0018 RST_18 equ 0x18
43: - 034D STRCONV_BYTES_TO_HEX equ 0x34D
44: - 035C STRCONV_BYTES_TO_HEX_1 equ 0x35C
45: - 0366 STRCONV_BYTES_TO_HEX_2 equ 0x366
46: - 0EC9 STR_Banner_Start equ 0xEC9
47: - 0EF9 STR_HEXDUMP_HEADER equ 0xEF9
48: - 0EEF STR_SyntaxError equ 0xEEF
49: - 0EF4 STR_Unknown equ 0xEF4
50: - 0ACE dasm_00 equ 0xACE
51: - 0DBA dasm_01 equ 0xDBA
52: - 0B54 dasm_02 equ 0xB54
53: - 0D8C dasm_03 equ 0xD8C
54: - 0BD1 dasm_08 equ 0xBD1
55: - 0D5F dasm_09 equ 0xD5F
56: - 0B36 dasm_0A equ 0xB36
57: - 0DA3 dasm_0B equ 0xDA3
58: - 0B16 dasm_10 equ 0xB16
59: - 0B5F dasm_12 equ 0xB5F
60: - 0AD9 dasm_18 equ 0xAD9
61: - 0B40 dasm_1A equ 0xB40
62: - 0AF3 dasm_20 equ 0xAF3
63: - 0E00 dasm_22 equ 0xE00
64: - 0B99 dasm_27 equ 0xB99
65: - 0AEC dasm_28 equ 0xAEC
66: - 0DD1 dasm_2A equ 0xDD1
67: - 0B9D dasm_2F equ 0xB9D
68: - 0AE4 dasm_30 equ 0xAE4
69: - 0B6A dasm_32 equ 0xB6A
70: - 0BA9 dasm_37 equ 0xBA9
71: - 0ADD dasm_38 equ 0xADD
72: - 0B4A dasm_3A equ 0xB4A
73: - 0BA5 dasm_3F equ 0xBA5
74: - 0BAD dasm_76 equ 0xBAD
75: - 0C2A dasm_80C6 equ 0xC2A
76: - 0BC7 dasm_BE equ 0xBC7
77: - 0AD2 dasm_C3 equ 0xAD2
78: - 0C50 dasm_C88E equ 0xC50
79: - 0B22 dasm_C9 equ 0xB22
80: - 0B1C dasm_CD equ 0xB1C
81: - 0BDE dasm_D9 equ 0xBDE
82: - 0B04 dasm_DD equ 0xB04
83: - 0DC1 dasm_DD_01 equ 0xDC1
84: - 0D7A dasm_DD_09 equ 0xD7A
85: - 0E16 dasm_DD_22 equ 0xE16
86: - 0D91 dasm_DD_23 equ 0xD91
87: - 0DE8 dasm_DD_2A equ 0xDE8
88: - 0DA8 dasm_DD_2B equ 0xDA8
89: - 0D2A dasm_DD_34 equ 0xD2A
90: - 0D47 dasm_DD_35 equ 0xD47
91: - 0C32 dasm_DD_86 equ 0xC32
92: - 0C58 dasm_DD_8E equ 0xC58
93: - 0C7B dasm_DD_96 equ 0xC7B
94: - 0C9B dasm_DD_9E equ 0xC9B
95: - 0CBC dasm_DD_A6 equ 0xCBC
96: - 0CF3 dasm_DD_AE equ 0xCF3
97: - 0CD8 dasm_DD_B6 equ 0xCD8
98: - 0D0F dasm_DD_BE equ 0xD0F
99: - 0E68 dasm_DD_E1 equ 0xE68
100: - 0BEE dasm_DD_E3 equ 0xBEE
101: - 0E52 dasm_DD_E5 equ 0xE52
102: - 0E38 dasm_DD_F9 equ 0xE38
103: - 0E62 dasm_E1 equ 0xE62
104: - 0BE2 dasm_E3 equ 0xBE2
105: - 0E4C dasm_E5 equ 0xE4C
106: - 0AFB dasm_E9 equ 0xAFB
107: - 0D71 dasm_ED_42 equ 0xD71
108: - 0E0C dasm_ED_43 equ 0xE0C
109: - 0BA1 dasm_ED_44 equ 0xBA1
110: - 0B2C dasm_ED_45 equ 0xB2C
111: - 0BB8 dasm_ED_46 equ 0xBB8
112: - 0D68 dasm_ED_4A equ 0xD68
113: - 0DDD dasm_ED_4B equ 0xDDD
114: - 0B27 dasm_ED_4D equ 0xB27
115: - 0BBD dasm_ED_56 equ 0xBBD
116: - 0BC2 dasm_ED_5E equ 0xBC2
117: - 0C06 dasm_ED_A0 equ 0xC06
118: - 0C18 dasm_ED_A1 equ 0xC18
119: - 0C0F dasm_ED_A8 equ 0xC0F
120: - 0C21 dasm_ED_A9 equ 0xC21
121: - 0C0A dasm_ED_B0 equ 0xC0A
122: - 0C1C dasm_ED_B1 equ 0xC1C
123: - 0C13 dasm_ED_B8 equ 0xC13
124: - 0C25 dasm_ED_B9 equ 0xC25
125: - 0BB2 dasm_F3 equ 0xBB2
126: - 0E2E dasm_F9 equ 0xE2E
127: - 0BB5 dasm_FB equ 0xBB5
128: - 0B0D dasm_FD equ 0xB0D
129: - 0DC9 dasm_FD_01 equ 0xDC9
130: - 0D83 dasm_FD_09 equ 0xD83
131: - 0E22 dasm_FD_22 equ 0xE22
132: - 0D9A dasm_FD_23 equ 0xD9A
133: - 0DF4 dasm_FD_2A equ 0xDF4
134: - 0DB1 dasm_FD_2B equ 0xDB1
135: - 0D36 dasm_FD_34 equ 0xD36
136: - 0D53 dasm_FD_35 equ 0xD53
137: - 0C41 dasm_FD_86 equ 0xC41
138: - 0C67 dasm_FD_8E equ 0xC67
139: - 0C87 dasm_FD_96 equ 0xC87
140: - 0CA9 dasm_FD_9E equ 0xCA9
141: - 0CC8 dasm_FD_A6 equ 0xCC8
142: - 0CFF dasm_FD_AE equ 0xCFF
143: - 0CE3 dasm_FD_B6 equ 0xCE3
144: - 0D1A dasm_FD_BE equ 0xD1A
145: - 0E70 dasm_FD_E1 equ 0xE70
146: - 0BFA dasm_FD_E3 equ 0xBFA
147: - 0E5A dasm_FD_E5 equ 0xE5A
148: - 0E42 dasm_FD_F9 equ 0xE42
149: - 0B31 dasm_FF equ 0xB31
150: - 0E78 dasm_UU equ 0xE78
151: - 0E7C dasm_UW equ 0xE7C
152: - 0CB7 dasm__AND equ 0xCB7
153: - 0D0B dasm__CP equ 0xD0B
154: - 0D42 dasm__DEC equ 0xD42
155: - 0B89 dasm__ED_47 equ 0xB89
156: - 0B91 dasm__ED_4F equ 0xB91
157: - 0B79 dasm__ED_57 equ 0xB79
158: - 0B81 dasm__ED_5F equ 0xB81
159: - 0D25 dasm__INC equ 0xD25
160: - 0B75 dasm__LD equ 0xB75
161: - 0CD4 dasm__OR equ 0xCD4
162: - 0C93 dasm__SBC equ 0xC93
163: - 0C76 dasm__SUB equ 0xC76
164: - 0CEE dasm__XOR equ 0xCEE
165: - 0676 dasm_opcode_table equ 0x676
166: - 04A3 dasm_print16hex_addr equ 0x4A3
167: - 04BB dasm_print8hex equ 0x4BB
168: - 0E81 dasm_printFlags_table equ 0xE81
169: - 0E91 dasm_printRegister8_table equ 0xE91
170: - 0EB1 dasm_printRegister8_table_HL equ 0xEB1
171: - 0E99 dasm_printRegisterIX_table equ 0xE99
172: - 0EA1 dasm_printRegisterIY_table equ 0xEA1
173: - 0EA9 dasm_printRegisterSP_table equ 0xEA9
174: - 0367 disassemble equ 0x367
175: - 044D disassemble_continue equ 0x44D
176: - 043D disassemble_err equ 0x43D
177: - 036B disassemble_next equ 0x36B
178: - 043A disassemble_print_opcode_params_end equ 0x43A
179: - 03E6 disassemble_print_opcode_params_loop equ 0x3E6
180: - 03A8 disassemble_print_opcode_raw equ 0x3A8
181: - 03BC disassemble_print_opcode_raw_fill equ 0x3BC
182: - 047F disassemble_table_first_match equ 0x47F
183: - 0499 disassemble_table_found equ 0x499
184: - 049D disassemble_table_notfound equ 0x49D
185: - 045B disassemble_table_seek equ 0x45B
186: - 045F disassemble_table_seek_loop equ 0x45F
187: - 0076 mon_start_complete equ 0x76
188: - 0050 mon_start_init_ctc equ 0x50
189: - 005F mon_start_init_serial equ 0x5F
190: - 0050 mon_start_init_sound equ 0x50
191: - 0062 mon_start_ram equ 0x62
192: - 006B mon_start_ram_loop equ 0x6B
193: - 0044 mon_var_template equ 0x44
194: - 402A mon_var_template_end equ 0x402A
195: - 04C9 param_01 equ 0x4C9
196: - 04F0 param_02 equ 0x4F0
197: - 050D param_03 equ 0x50D
198: - 0545 param_03_done equ 0x545
199: - 052E param_03_neg equ 0x52E
200: - 0549 param_04 equ 0x549
201: - 0559 param_04_i equ 0x559
202: - 055F param_05 equ 0x55F
203: - 056C param_06 equ 0x56C
204: - 0586 param_07 equ 0x586
205: - 0593 param_08 equ 0x593
206: - 05A8 param_09 equ 0x5A8
207: - 05AE param_09_0A equ 0x5AE
208: - 059F param_0A equ 0x59F
209: - 05BD param_10 equ 0x5BD
210: - 05CD param_11 equ 0x5CD
211: - 05DC param_11_12 equ 0x5DC
212: - 05FC param_11_12_all equ 0x5FC
213: - 05EF param_11_12_def equ 0x5EF
214: - 05F4 param_11_12_ix equ 0x5F4
215: - 05F9 param_11_12_iy equ 0x5F9
216: - 05D5 param_12 equ 0x5D5
217: - 060D param_13 equ 0x60D
218: - 062C param_80 equ 0x62C
219: - 0633 param_80_seek equ 0x633
220: - 0623 param_81 equ 0x623
221: - 0667 param_comma equ 0x667
222: - 0642 param_printRegister equ 0x642
223: - 0660 param_printRegisterA equ 0x660
224: - 0658 param_printRegisterHL equ 0x658
225: - 02D9 print_a_hex equ 0x2D9
226: - 02A9 print_char equ 0x2A9
227: - 02BC print_clear equ 0x2BC
228: - 02C3 print_newLine equ 0x2C3
229: - 02B1 print_str equ 0x2B1
230: - 02BB print_str_end equ 0x2BB
231: - 02CE print_wait_out equ 0x2CE
232: - 02EA read_char equ 0x2EA
233: - 4029 var_buffer equ 0x4029
234: - 4000 var_buffer_len equ 0x4000
235: - 4006 var_curserchar equ 0x4006
236: - 4007 var_curserlastaddr equ 0x4007
237: - 4005 var_curseron equ 0x4005
238: - 4004 var_curserstate equ 0x4004
239: - 4002 var_curserx equ 0x4002
240: - 4003 var_cursery equ 0x4003
241: - 4001 var_last_char equ 0x4001
242: - 4019 var_ps2mem equ 0x4019
243: - 4009 var_scratch equ 0x4009
244: - 108A xmodem_ack equ 0x108A
245: - 0F43 xmodem_await_conn equ 0xF43
246: - 0FEE xmodem_end equ 0xFEE
247: - 0FB4 xmodem_err equ 0xFB4
248: - 0F15 xmodem_init equ 0xF15
249: - 0FF5 xmodem_int equ 0xFF5
250: - 1014 xmodem_int_cont equ 0x1014
251: - 1098 xmodem_nak equ 0x1098
252: - 1046 xmodem_out equ 0x1046
253: - 0F4E xmodem_packet equ 0xF4E
254: - 0FAC xmodem_packet_EOT equ 0xFAC
255: - 0F60 xmodem_packet_get equ 0xF60
256: - 0F99 xmodem_packet_get_crc equ 0xF99
257: - 0F8A xmodem_packet_get_data equ 0xF8A
258: - 1019 xmodem_read_wait equ 0x1019
259: - 1027 xmodem_read_wait_loop equ 0x1027
260: - 1044 xmodem_read_wait_timeout equ 0x1044
261: - 10A6 xmodem_wait equ 0x10A6
262: - 10AC xmodem_wait_1 equ 0x10AC
263: - 104C xmodem_wait_out equ 0x104C
**** test.asm ****
2: - 8000 org 0x8000
3:
4: 0+7 8000 3E04 LD A,4
5: 7+7 8002 0605 LD B,5
6: 14+4 8004 80 ADD A,b
7: 18+13 8005 321080 LD (0x8010),A
8: 31+10 8008 C38B00 JP PROMPT_BEGIN
9:
10:
Statistics:
3 passes
0 jr promotions
260 symbols
11 bytes
Symbol Table:
AY0_WRITE_REG =83 131
A_RTS_OFF = 304 772
A_RTS_ON = 30D 781
CMD_DASM = 22B 555
CMD_EXEC = 121 289
CMD_IO_READ = 20F 527
CMD_IO_WRITE = 1E6 486
CMD_SET = 1AA 426
CMD_SET_END = 1E0 480
CMD_SET_LOOP = 1C5 453
CMD_SYNTAX_ERROR= 264 612
CMD_VIEW = 140 320
CMD_VIEW_END = 1A4 420
CMD_VIEW_ROW = 179 377
CMD_VIEW_ROW_LOOP= 18B 395
CONSOLE_INIT = 270 624
CONSOLE_INIT_CTC= 270 624
CONSOLE_INIT_SIO= 278 632
DHEX_TO_BYTE = 316 790
DHEX_TO_BYTE_FAILED= 332 818
EXEC_RST_08 = EB6 3766
EXEC_RST_10 = EBA 3770
EXEC_RST_18 = EC6 3782
HEX_TO_BIN = 336 822
HEX_TO_BIN_2 = 344 836
HEX_TO_INVALID_2= 34B 843
INT_VEC =1B 27
Includes = 270 624
MSG_CLEAR = 2FC 764
MSG_ERROR =1057 4183
MSG_START =1070 4208
PROMPT_BEGIN =8B 139
PROMPT_BEGIN_READ_BACKSPACE=C8 200
PROMPT_BEGIN_READ_LOOP=97 151
PROMPT_BEGIN_READ_PROCESS=EE 238
RST_00 =00 0
RST_08 =08 8
RST_10 =10 16
RST_18 =18 24
STRCONV_BYTES_TO_HEX= 34D 845
STRCONV_BYTES_TO_HEX_1= 35C 860
STRCONV_BYTES_TO_HEX_2= 366 870
STR_Banner_Start= EC9 3785
STR_HEXDUMP_HEADER= EF9 3833
STR_SyntaxError= EEF 3823
STR_Unknown = EF4 3828
dasm_00 = ACE 2766
dasm_01 = DBA 3514
dasm_02 = B54 2900
dasm_03 = D8C 3468
dasm_08 = BD1 3025
dasm_09 = D5F 3423
dasm_0A = B36 2870
dasm_0B = DA3 3491
dasm_10 = B16 2838
dasm_12 = B5F 2911
dasm_18 = AD9 2777
dasm_1A = B40 2880
dasm_20 = AF3 2803
dasm_22 = E00 3584
dasm_27 = B99 2969
dasm_28 = AEC 2796
dasm_2A = DD1 3537
dasm_2F = B9D 2973
dasm_30 = AE4 2788
dasm_32 = B6A 2922
dasm_37 = BA9 2985
dasm_38 = ADD 2781
dasm_3A = B4A 2890
dasm_3F = BA5 2981
dasm_76 = BAD 2989
dasm_80C6 = C2A 3114
dasm_BE = BC7 3015
dasm_C3 = AD2 2770
dasm_C88E = C50 3152
dasm_C9 = B22 2850
dasm_CD = B1C 2844
dasm_D9 = BDE 3038
dasm_DD = B04 2820
dasm_DD_01 = DC1 3521
dasm_DD_09 = D7A 3450
dasm_DD_22 = E16 3606
dasm_DD_23 = D91 3473
dasm_DD_2A = DE8 3560
dasm_DD_2B = DA8 3496
dasm_DD_34 = D2A 3370
dasm_DD_35 = D47 3399
dasm_DD_86 = C32 3122
dasm_DD_8E = C58 3160
dasm_DD_96 = C7B 3195
dasm_DD_9E = C9B 3227
dasm_DD_A6 = CBC 3260
dasm_DD_AE = CF3 3315
dasm_DD_B6 = CD8 3288
dasm_DD_BE = D0F 3343
dasm_DD_E1 = E68 3688
dasm_DD_E3 = BEE 3054
dasm_DD_E5 = E52 3666
dasm_DD_F9 = E38 3640
dasm_E1 = E62 3682
dasm_E3 = BE2 3042
dasm_E5 = E4C 3660
dasm_E9 = AFB 2811
dasm_ED_42 = D71 3441
dasm_ED_43 = E0C 3596
dasm_ED_44 = BA1 2977
dasm_ED_45 = B2C 2860
dasm_ED_46 = BB8 3000
dasm_ED_4A = D68 3432
dasm_ED_4B = DDD 3549
dasm_ED_4D = B27 2855
dasm_ED_56 = BBD 3005
dasm_ED_5E = BC2 3010
dasm_ED_A0 = C06 3078
dasm_ED_A1 = C18 3096
dasm_ED_A8 = C0F 3087
dasm_ED_A9 = C21 3105
dasm_ED_B0 = C0A 3082
dasm_ED_B1 = C1C 3100
dasm_ED_B8 = C13 3091
dasm_ED_B9 = C25 3109
dasm_F3 = BB2 2994
dasm_F9 = E2E 3630
dasm_FB = BB5 2997
dasm_FD = B0D 2829
dasm_FD_01 = DC9 3529
dasm_FD_09 = D83 3459
dasm_FD_22 = E22 3618
dasm_FD_23 = D9A 3482
dasm_FD_2A = DF4 3572
dasm_FD_2B = DB1 3505
dasm_FD_34 = D36 3382
dasm_FD_35 = D53 3411
dasm_FD_86 = C41 3137
dasm_FD_8E = C67 3175
dasm_FD_96 = C87 3207
dasm_FD_9E = CA9 3241
dasm_FD_A6 = CC8 3272
dasm_FD_AE = CFF 3327
dasm_FD_B6 = CE3 3299
dasm_FD_BE = D1A 3354
dasm_FD_E1 = E70 3696
dasm_FD_E3 = BFA 3066
dasm_FD_E5 = E5A 3674
dasm_FD_F9 = E42 3650
dasm_FF = B31 2865
dasm_UU = E78 3704
dasm_UW = E7C 3708
dasm__AND = CB7 3255
dasm__CP = D0B 3339
dasm__DEC = D42 3394
dasm__ED_47 = B89 2953
dasm__ED_4F = B91 2961
dasm__ED_57 = B79 2937
dasm__ED_5F = B81 2945
dasm__INC = D25 3365
dasm__LD = B75 2933
dasm__OR = CD4 3284
dasm__SBC = C93 3219
dasm__SUB = C76 3190
dasm__XOR = CEE 3310
dasm_opcode_table= 676 1654
dasm_print16hex_addr= 4A3 1187
dasm_print8hex = 4BB 1211
dasm_printFlags_table= E81 3713
dasm_printRegister8_table= E91 3729
dasm_printRegister8_table_HL= EB1 3761
dasm_printRegisterIX_table= E99 3737
dasm_printRegisterIY_table= EA1 3745
dasm_printRegisterSP_table= EA9 3753
disassemble = 367 871
disassemble_continue= 44D 1101
disassemble_err= 43D 1085
disassemble_next= 36B 875
disassemble_print_opcode_params_end= 43A 1082
disassemble_print_opcode_params_loop= 3E6 998
disassemble_print_opcode_raw= 3A8 936
disassemble_print_opcode_raw_fill= 3BC 956
disassemble_table_first_match= 47F 1151
disassemble_table_found= 499 1177
disassemble_table_notfound= 49D 1181
disassemble_table_seek= 45B 1115
disassemble_table_seek_loop= 45F 1119
mon_start_complete=76 118
mon_start_init_ctc=50 80
mon_start_init_serial=5F 95
mon_start_init_sound=50 80
mon_start_ram =62 98
mon_start_ram_loop=6B 107
mon_var_template=44 68
mon_var_template_end=402A 16426
param_01 = 4C9 1225
param_02 = 4F0 1264
param_03 = 50D 1293
param_03_done = 545 1349
param_03_neg = 52E 1326
param_04 = 549 1353
param_04_i = 559 1369
param_05 = 55F 1375
param_06 = 56C 1388
param_07 = 586 1414
param_08 = 593 1427
param_09 = 5A8 1448
param_09_0A = 5AE 1454
param_0A = 59F 1439
param_10 = 5BD 1469
param_11 = 5CD 1485
param_11_12 = 5DC 1500
param_11_12_all= 5FC 1532
param_11_12_def= 5EF 1519
param_11_12_ix = 5F4 1524
param_11_12_iy = 5F9 1529
param_12 = 5D5 1493
param_13 = 60D 1549
param_80 = 62C 1580
param_80_seek = 633 1587
param_81 = 623 1571
param_comma = 667 1639
param_printRegister= 642 1602
param_printRegisterA= 660 1632
param_printRegisterHL= 658 1624
print_a_hex = 2D9 729
print_char = 2A9 681
print_clear = 2BC 700
print_newLine = 2C3 707
print_str = 2B1 689
print_str_end = 2BB 699
print_wait_out = 2CE 718
read_char = 2EA 746
var_buffer =4029 16425
var_buffer_len =4000 16384
var_curserchar =4006 16390
var_curserlastaddr=4007 16391
var_curseron =4005 16389
var_curserstate=4004 16388
var_curserx =4002 16386
var_cursery =4003 16387
var_last_char =4001 16385
var_ps2mem =4019 16409
var_scratch =4009 16393
xmodem_ack =108A 4234
xmodem_await_conn= F43 3907
xmodem_end = FEE 4078
xmodem_err = FB4 4020
xmodem_init = F15 3861
xmodem_int = FF5 4085
xmodem_int_cont=1014 4116
xmodem_nak =1098 4248
xmodem_out =1046 4166
xmodem_packet = F4E 3918
xmodem_packet_EOT= FAC 4012
xmodem_packet_get= F60 3936
xmodem_packet_get_crc= F99 3993
xmodem_packet_get_data= F8A 3978
xmodem_read_wait=1019 4121
xmodem_read_wait_loop=1027 4135
xmodem_read_wait_timeout=1044 4164
xmodem_wait =10A6 4262
xmodem_wait_1 =10AC 4268
xmodem_wait_out=104C 4172

View File

@@ -0,0 +1 @@
!8000 3E 04 06 05 80 32 10 80 C3 8B 00

View File

@@ -1 +1,89 @@
# Z8C-Homebrew-Computer
## Using the build tools
The Z8C uses the zmac macro assembler (http://48k.ca/zmac.html)
To easily develop for my Z80 homebrew system, I designed a simple
assempler development environment. This packs the following tasks into one script:
* zmac assembly
* object file creation (for xmodem upload)
* monitor file creation (creates monitor commands for ascii upload)
* symbol table include file generation
* eeprom programming for the minipro
### Prequisites
* zmac - self-compiled version included in ./Utility.
* minipro (https://gitlab.com/DavidGriffith/minipro)
* binutils (apt-get install binutils-multiarch,
pacman -S aarch64-linux-gnu-binutils )
### Building a project
`./build.sh <dir> <asm filename>`
* `dir`: Path to the location of the asm file
* `asm filename`: name of the assembly file without suffix
```
# e.g.:
cd ./Utility
./build.sh ../OperatingSystem/monitor_v2
./build.sh ../OperatingSystem/software
```
### Building a project with a properties file
`./build.sh <dir>`
* `dir`: Path to the location of the asm file
The directory must contain a file called `properties.env`
This file can contain project-specific options.
Example:
```
export OPT_GEN_SYMBOLTABLE=1
export OPT_GEN_MONFILE=0
export OPT_GEN_OBJFILE=1
export OPT_WRITEROM=1
export FILENAME=main
```
#### Options
* `OPT_GEN_SYMBOLTABLE` if set to 1: Generates the symbols.s file
* `OPT_GEN_MONFILE` if set to 1: Generates the monitor file
* `OPT_GEN_OBJFILE` if set to 1: Generates the object file
* `OPT_WRITEROM` if set to 1: Starts eeprom programmer
* `FILENAME` same as the `<asm filename>` paramter of the build script
* `ROOT_DIR` overrides the project root path. required if git is not used
* `EEPROM_PART` sets EEPROM part for minipro. Default: `AT28C256`
## System design
The Z80 Hombrew computer is modular computer system, designed arround a custom backplane.
### Available modules
#### Z8C CPU/COM Board
* Z80 ZPU @ 4MHz (6MHz planned)
* 64 KiB SRAM
* 32 KiB EEPROM (R/W switchable)
* Z80 CTC with external 1.8432MHz Clock switchable per channel
* Z80 SIO (Up to 115200 BAUD possible @ X16 SIO prescaler)
* 1 FTDI Connector
* 1 RS232 DSUB-9 Port
* 8 front-facing DIP switches (currently used for baud-rate setup)
* Power-On-Reset Circuit
```
Memory Layout
Default ($00 = 0x00) Mode 1 ($00 = 0x02) Mode 2 ($00 = 0x01)
$0000 +--------------------+--------------------+--------------------+
| EEPROM Lower 16KiB | EEPROM Upper 16KiB | SRAM |
$4000 +--------------------+--------------------+ |
| SRAM | SRAM | |
| | | |
| | | |
$FFFF +--------------------+--------------------+--------------------+
IO Addresses:
$00 Memory register
$01 DIP Switches
$04 CTC (First address)
$08 SIO (First address)
```

View File

@@ -40,7 +40,7 @@
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type none))
)
(arc (start -0.6096 -3.81) (mid 2.1842 -2.5851) (end 3.81 0)
(arc (start -0.6096 -3.81) (mid 2.1855 -2.584) (end 3.81 0)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type background))
)
@@ -78,7 +78,7 @@
(stroke (width -25.4) (type default) (color 0 0 0 0))
(fill (type background))
)
(arc (start 3.81 0) (mid 2.1915 2.5936) (end -0.6096 3.81)
(arc (start 3.81 0) (mid 2.1928 2.5925) (end -0.6096 3.81)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type background))
)
@@ -128,7 +128,7 @@
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type none))
)
(arc (start -0.6096 -3.81) (mid 2.1842 -2.5851) (end 3.81 0)
(arc (start -0.6096 -3.81) (mid 2.1855 -2.584) (end 3.81 0)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type background))
)
@@ -166,7 +166,7 @@
(stroke (width -25.4) (type default) (color 0 0 0 0))
(fill (type background))
)
(arc (start 3.81 0) (mid 2.1915 2.5936) (end -0.6096 3.81)
(arc (start 3.81 0) (mid 2.1928 2.5925) (end -0.6096 3.81)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type background))
)
@@ -216,7 +216,7 @@
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type none))
)
(arc (start -0.6096 -3.81) (mid 2.1842 -2.5851) (end 3.81 0)
(arc (start -0.6096 -3.81) (mid 2.1855 -2.584) (end 3.81 0)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type background))
)
@@ -254,7 +254,7 @@
(stroke (width -25.4) (type default) (color 0 0 0 0))
(fill (type background))
)
(arc (start 3.81 0) (mid 2.1915 2.5936) (end -0.6096 3.81)
(arc (start 3.81 0) (mid 2.1928 2.5925) (end -0.6096 3.81)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type background))
)
@@ -304,7 +304,7 @@
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type none))
)
(arc (start -0.6096 -3.81) (mid 2.1842 -2.5851) (end 3.81 0)
(arc (start -0.6096 -3.81) (mid 2.1855 -2.584) (end 3.81 0)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type background))
)
@@ -342,7 +342,7 @@
(stroke (width -25.4) (type default) (color 0 0 0 0))
(fill (type background))
)
(arc (start 3.81 0) (mid 2.1915 2.5936) (end -0.6096 3.81)
(arc (start 3.81 0) (mid 2.1928 2.5925) (end -0.6096 3.81)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type background))
)
@@ -10145,20 +10145,8 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 187.325 47.117 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid ea966899-4bde-4a56-b6b4-55d56680b0ef))
(pin "2" (uuid 9688ccbe-ea8a-4297-8bf8-ff9528de589d))
(pin "3" (uuid 42399c56-e0f4-408a-9350-07cb5b6d7f4a))
(pin "4" (uuid 8eb26a33-1ed2-47a7-bea7-d4fb234cf846))
(pin "5" (uuid 9d76b60f-aa66-4ba7-a436-dea5679b5dd4))
(pin "6" (uuid 0e0be57b-f293-4133-a71a-4018a5c708f2))
(pin "8" (uuid f16bf821-0bff-4070-96a8-85bb70622ada))
(pin "9" (uuid 328e2515-4e56-40fa-b869-71d9d148e805))
(pin "10" (uuid d911cf16-dd9b-4153-aa56-cfe690cdf083))
(pin "11" (uuid b0ce1fb7-0632-4799-a680-b317da495db8))
(pin "12" (uuid 6d5f86fa-3f67-4c51-9cb1-d497c3f206cc))
(pin "13" (uuid 98608ce4-907f-42d2-8245-3942449051f9))
(pin "14" (uuid f73f81b1-4dd4-4f4f-ada1-428ca369647c))
(pin "7" (uuid 5e943cb8-ba57-4d23-b6c6-3bc096bf10a2))
)
(symbol (lib_id "power:GND") (at 224.79 198.628 0) (unit 1)
@@ -10258,17 +10246,6 @@
(pin "1" (uuid eb20a1e2-7c28-47ce-8b2f-a5284bd45dee))
(pin "2" (uuid a261f855-2e47-4b0b-9303-1e8bdced1e18))
(pin "3" (uuid 0c955ca8-fd0e-4417-8853-daf3ed77316c))
(pin "4" (uuid e05b5b58-e2fd-419d-a39f-28430735064e))
(pin "5" (uuid d8eb17ae-7649-4800-80b1-d0d15ccee7cc))
(pin "6" (uuid 6f79cfdc-03c1-407f-a84f-91f27baeafba))
(pin "10" (uuid 812065ce-5f01-4f3f-94cf-cef416146be7))
(pin "8" (uuid ee974ca5-c429-4072-bb88-2107b1eadcfa))
(pin "9" (uuid dcc1b4d9-0694-4552-af63-e44fd3049230))
(pin "11" (uuid ac8d5d63-35ba-4ef1-b4e8-8bc719c6baf5))
(pin "12" (uuid 32f97159-f487-4078-8fcf-601f1198c7fd))
(pin "13" (uuid 543b7110-8cf8-4b19-bab1-5a27656e6eea))
(pin "14" (uuid 34d70169-f461-4cbc-bd67-6d4abb544206))
(pin "7" (uuid 50aa8e35-be72-4125-bcf9-e795dd8a0d3e))
)
(symbol (lib_id "power:GND") (at 24.257 81.534 0) (unit 1)
@@ -10298,20 +10275,8 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 287.528 222.504 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid e157f6e2-f0a0-40ec-82af-d1a4a142b53d))
(pin "2" (uuid 7b0666c4-94c4-4b4f-9f3f-236cabc5fca6))
(pin "3" (uuid 32f49f5c-1642-40f9-9b18-9ad7321354e7))
(pin "4" (uuid 376bc595-dcc7-4f6b-87d6-97bff6b9444e))
(pin "5" (uuid 9eab2a74-7819-4f65-8cc6-c6bfea329d49))
(pin "6" (uuid c90abac9-738b-4b05-98c4-dec0f8dce5c2))
(pin "8" (uuid 51e4f943-835c-4476-882a-7a3e4d26af2b))
(pin "9" (uuid dd2caa7b-e7b6-458c-bbe6-9ee4d2d6ae22))
(pin "10" (uuid 1d8fe69d-9fee-4d4b-a74a-5bb815fdc20b))
(pin "11" (uuid 9fe6601e-2a0f-45e5-aae6-589e4182e4b0))
(pin "12" (uuid 3e35d241-33bf-4456-8daf-c6ab3b11199f))
(pin "13" (uuid 83dfac92-84bb-4294-8e83-88993079f665))
(pin "14" (uuid de54d837-f4b7-4cf7-a81c-938adf10fca9))
(pin "7" (uuid 0fc40bef-18cf-4821-9cb3-f36cf4358ace))
)
(symbol (lib_id "power:+5V") (at 375.412 97.79 0) (unit 1)
@@ -10408,20 +10373,8 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 187.325 87.122 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 107f2e2e-70ca-4ab4-9d71-918d71770815))
(pin "2" (uuid 69cb10ff-a0e2-4975-ba58-2a7c71078a26))
(pin "3" (uuid 42399c56-e0f4-408a-9350-07cb5b6d7f4b))
(pin "4" (uuid 8eb26a33-1ed2-47a7-bea7-d4fb234cf847))
(pin "5" (uuid 9d76b60f-aa66-4ba7-a436-dea5679b5dd5))
(pin "6" (uuid 0e0be57b-f293-4133-a71a-4018a5c708f3))
(pin "8" (uuid f16bf821-0bff-4070-96a8-85bb70622adb))
(pin "9" (uuid 328e2515-4e56-40fa-b869-71d9d148e806))
(pin "10" (uuid d911cf16-dd9b-4153-aa56-cfe690cdf084))
(pin "11" (uuid b0ce1fb7-0632-4799-a680-b317da495db9))
(pin "12" (uuid 6d5f86fa-3f67-4c51-9cb1-d497c3f206cd))
(pin "13" (uuid 98608ce4-907f-42d2-8245-3942449051fa))
(pin "14" (uuid f73f81b1-4dd4-4f4f-ada1-428ca369647d))
(pin "7" (uuid 5e943cb8-ba57-4d23-b6c6-3bc096bf10a3))
)
(symbol (lib_id "power:+5V") (at 398.272 97.79 0) (unit 1)
@@ -10467,20 +10420,8 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 286.766 187.706 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid e157f6e2-f0a0-40ec-82af-d1a4a142b53e))
(pin "2" (uuid 7b0666c4-94c4-4b4f-9f3f-236cabc5fca7))
(pin "3" (uuid 32f49f5c-1642-40f9-9b18-9ad7321354e8))
(pin "4" (uuid 376bc595-dcc7-4f6b-87d6-97bff6b9444f))
(pin "5" (uuid 471495fe-252b-4f0b-8470-686a3c6221dc))
(pin "6" (uuid 0116113f-4c86-400e-80e1-6175941574db))
(pin "8" (uuid 51e4f943-835c-4476-882a-7a3e4d26af2c))
(pin "9" (uuid dd2caa7b-e7b6-458c-bbe6-9ee4d2d6ae23))
(pin "10" (uuid e67478b8-907e-448f-9d1e-bcf596708798))
(pin "11" (uuid 58b1bf9e-a4b1-45c7-bda9-ca0c5dbb182e))
(pin "12" (uuid 3e35d241-33bf-4456-8daf-c6ab3b1119a0))
(pin "13" (uuid 83dfac92-84bb-4294-8e83-88993079f666))
(pin "14" (uuid de54d837-f4b7-4cf7-a81c-938adf10fcaa))
(pin "7" (uuid 0fc40bef-18cf-4821-9cb3-f36cf4358acf))
)
(symbol (lib_id "power:GND") (at 74.422 174.244 0) (unit 1)
@@ -10514,20 +10455,12 @@
(property "Datasheet" "74xx/74hc_hct74.pdf" (id 3) (at 58.42 124.968 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid d2da9c11-b1df-4cc9-a0f9-b55b00bfaf30))
(pin "2" (uuid 06eeb444-1ce9-479b-b772-906054c0cc1c))
(pin "3" (uuid eef7e591-dd26-43b3-9bf9-c82d74c613a6))
(pin "4" (uuid 83e1d78e-eef8-42fc-acb2-7a7d5ce9ee82))
(pin "5" (uuid d6bffcbd-f2bd-4115-9535-aa28727d4a08))
(pin "6" (uuid 2a51be14-2cea-4af4-a52d-a0bbea63f056))
(pin "10" (uuid aad3b9b9-438a-40c4-a42e-79eefd361626))
(pin "11" (uuid e6e27987-f1e4-45c7-b8d3-f3decc2166b0))
(pin "12" (uuid af5fadaa-8199-4b79-a435-1d9060d52fb3))
(pin "13" (uuid 7a161f3b-f74f-4267-b505-94eb6490288e))
(pin "8" (uuid 978cdad3-b292-4e46-949d-807d2da8c148))
(pin "9" (uuid 71389ba3-5975-43c0-be26-657886e74dc9))
(pin "14" (uuid 2c35a585-0c26-4c99-8bcd-54908f10b551))
(pin "7" (uuid 1ce7278b-8505-44e3-b07e-1ddb0e09f4f8))
)
(symbol (lib_id "Jumper:Jumper_3_Open") (at 309.88 75.946 90) (unit 1)
@@ -10646,18 +10579,6 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 261.366 268.478 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid e157f6e2-f0a0-40ec-82af-d1a4a142b53f))
(pin "2" (uuid 7b0666c4-94c4-4b4f-9f3f-236cabc5fca8))
(pin "3" (uuid 32f49f5c-1642-40f9-9b18-9ad7321354e9))
(pin "4" (uuid 376bc595-dcc7-4f6b-87d6-97bff6b94450))
(pin "5" (uuid 9eab2a74-7819-4f65-8cc6-c6bfea329d4a))
(pin "6" (uuid c90abac9-738b-4b05-98c4-dec0f8dce5c3))
(pin "8" (uuid 51e4f943-835c-4476-882a-7a3e4d26af2d))
(pin "9" (uuid dd2caa7b-e7b6-458c-bbe6-9ee4d2d6ae24))
(pin "10" (uuid 1d8fe69d-9fee-4d4b-a74a-5bb815fdc20c))
(pin "11" (uuid 9fe6601e-2a0f-45e5-aae6-589e4182e4b1))
(pin "12" (uuid 1129e31c-b5f3-42b0-8dc9-2115840e7f2d))
(pin "13" (uuid a2284364-fd8d-4ee8-aca0-1f91109bb078))
(pin "14" (uuid de54d837-f4b7-4cf7-a81c-938adf10fcab))
(pin "7" (uuid 0fc40bef-18cf-4821-9cb3-f36cf4358ad0))
)
@@ -10840,20 +10761,8 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 287.274 210.82 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid e157f6e2-f0a0-40ec-82af-d1a4a142b540))
(pin "2" (uuid 7b0666c4-94c4-4b4f-9f3f-236cabc5fca9))
(pin "3" (uuid 32f49f5c-1642-40f9-9b18-9ad7321354ea))
(pin "4" (uuid 376bc595-dcc7-4f6b-87d6-97bff6b94451))
(pin "5" (uuid 9eab2a74-7819-4f65-8cc6-c6bfea329d4b))
(pin "6" (uuid c90abac9-738b-4b05-98c4-dec0f8dce5c4))
(pin "8" (uuid 51e4f943-835c-4476-882a-7a3e4d26af2e))
(pin "9" (uuid dd2caa7b-e7b6-458c-bbe6-9ee4d2d6ae25))
(pin "10" (uuid e67478b8-907e-448f-9d1e-bcf596708799))
(pin "11" (uuid 58b1bf9e-a4b1-45c7-bda9-ca0c5dbb182f))
(pin "12" (uuid 3e35d241-33bf-4456-8daf-c6ab3b1119a1))
(pin "13" (uuid 83dfac92-84bb-4294-8e83-88993079f667))
(pin "14" (uuid de54d837-f4b7-4cf7-a81c-938adf10fcac))
(pin "7" (uuid 0fc40bef-18cf-4821-9cb3-f36cf4358ad1))
)
(symbol (lib_id "Device:C_Small") (at 363.982 135.89 0) (unit 1)
@@ -10958,25 +10867,13 @@
(in_bom yes) (on_board yes)
(uuid 4991d4a0-6bf5-4325-88e8-8eba5fb919d0)
(property "Reference" "U11" (id 0) (at 241.3 264.16 0))
(property "Value" "74HC14" (id 1) (at 241.3 262.128 0))
(property "Value" "74HCT14" (id 1) (at 241.3 262.128 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket_LongPads" (id 2) (at 241.3 268.478 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74HC14" (id 3) (at 241.3 268.478 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 4bae2103-dba2-494c-9964-6026342a6a5e))
(pin "2" (uuid 3565b236-ad54-4c18-8a08-db3c85a606af))
(pin "3" (uuid b6f4c4df-4b7c-4555-9ab8-fc3cf25d2127))
(pin "4" (uuid c64a8456-b14e-4d4e-b386-f8bfd1e08400))
(pin "5" (uuid 98dec1ce-67b4-42e9-af00-a07d1e4c70d9))
(pin "6" (uuid 7fec7485-e5ae-4c8a-aadb-9dee232c8239))
(pin "8" (uuid 2d0d97e8-4d71-475a-891b-b5fd8c48c5f5))
(pin "9" (uuid 0217bc67-6323-4971-a852-fa86076bd8a8))
(pin "10" (uuid a41ef2fb-0af7-474d-9a1e-9c912a01ff69))
(pin "11" (uuid bb73d9bc-5179-4e43-9eae-b94e0eb59c1d))
(pin "12" (uuid 65315837-6e2e-4ecd-8759-319e4cea7030))
(pin "13" (uuid a1b1849e-044f-4c9b-a32f-a307cceec4e9))
(pin "14" (uuid b82866a6-71a2-4bd0-b8cd-917449236930))
(pin "7" (uuid d0c22809-3fdf-4267-aca7-d13a5cd288cf))
)
@@ -11136,18 +11033,6 @@
)
(pin "1" (uuid 64f83bb6-48dd-4ae5-addf-c5eb5aa2f94f))
(pin "2" (uuid de2b92d5-c15c-4a3e-a280-ea883ca377f7))
(pin "3" (uuid 42399c56-e0f4-408a-9350-07cb5b6d7f4c))
(pin "4" (uuid 8eb26a33-1ed2-47a7-bea7-d4fb234cf848))
(pin "5" (uuid 9d76b60f-aa66-4ba7-a436-dea5679b5dd6))
(pin "6" (uuid 0e0be57b-f293-4133-a71a-4018a5c708f4))
(pin "8" (uuid f16bf821-0bff-4070-96a8-85bb70622adc))
(pin "9" (uuid 328e2515-4e56-40fa-b869-71d9d148e807))
(pin "10" (uuid d911cf16-dd9b-4153-aa56-cfe690cdf085))
(pin "11" (uuid b0ce1fb7-0632-4799-a680-b317da495dba))
(pin "12" (uuid 6d5f86fa-3f67-4c51-9cb1-d497c3f206ce))
(pin "13" (uuid 98608ce4-907f-42d2-8245-3942449051fb))
(pin "14" (uuid f73f81b1-4dd4-4f4f-ada1-428ca369647e))
(pin "7" (uuid 5e943cb8-ba57-4d23-b6c6-3bc096bf10a4))
)
(symbol (lib_id "74xx:74HC245") (at 87.122 252.984 0) (unit 1)
@@ -11210,27 +11095,15 @@
(in_bom yes) (on_board yes)
(uuid 58a8b3a1-a7aa-40fe-9a58-06c1422ea30c)
(property "Reference" "U11" (id 0) (at 286.004 146.558 0))
(property "Value" "74HC14" (id 1) (at 286.004 144.526 0))
(property "Value" "74HCT14" (id 1) (at 286.004 144.526 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket_LongPads" (id 2) (at 286.004 150.876 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74HC14" (id 3) (at 286.004 150.876 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 4bae2103-dba2-494c-9964-6026342a6a5f))
(pin "2" (uuid 3565b236-ad54-4c18-8a08-db3c85a606b0))
(pin "3" (uuid 3df825ec-9b11-46c7-a8c0-d60af9138927))
(pin "4" (uuid 7f96a666-be9e-4c71-97d5-b7f84393d84a))
(pin "5" (uuid 185ce7fc-526c-482b-8fb9-9f46d21f1907))
(pin "6" (uuid 8d53f151-9fcc-4e74-8790-790c5624eb89))
(pin "8" (uuid 2d0d97e8-4d71-475a-891b-b5fd8c48c5f6))
(pin "9" (uuid 0217bc67-6323-4971-a852-fa86076bd8a9))
(pin "10" (uuid a41ef2fb-0af7-474d-9a1e-9c912a01ff6a))
(pin "11" (uuid bb73d9bc-5179-4e43-9eae-b94e0eb59c1e))
(pin "12" (uuid 65315837-6e2e-4ecd-8759-319e4cea7031))
(pin "13" (uuid a1b1849e-044f-4c9b-a32f-a307cceec4ea))
(pin "14" (uuid b82866a6-71a2-4bd0-b8cd-917449236931))
(pin "7" (uuid d0c22809-3fdf-4267-aca7-d13a5cd288d0))
)
(symbol (lib_id "power:GND") (at 125.73 121.412 0) (unit 1)
@@ -11356,27 +11229,15 @@
(in_bom yes) (on_board yes)
(uuid 5e60ccf7-42d3-46c6-8396-05d33b7f1d6c)
(property "Reference" "U11" (id 0) (at 285.496 123.698 0))
(property "Value" "74HC14" (id 1) (at 285.496 121.666 0))
(property "Value" "74HCT14" (id 1) (at 285.496 121.666 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket_LongPads" (id 2) (at 285.496 128.016 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74HC14" (id 3) (at 285.496 128.016 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 4bae2103-dba2-494c-9964-6026342a6a60))
(pin "2" (uuid 3565b236-ad54-4c18-8a08-db3c85a606b1))
(pin "3" (uuid b41e4517-98c8-4329-8bc0-978b2fa63c4e))
(pin "4" (uuid abb12b97-eb39-44f2-812c-40fa60185ec2))
(pin "5" (uuid 98dec1ce-67b4-42e9-af00-a07d1e4c70da))
(pin "6" (uuid 7fec7485-e5ae-4c8a-aadb-9dee232c823a))
(pin "8" (uuid 2d0d97e8-4d71-475a-891b-b5fd8c48c5f7))
(pin "9" (uuid 0217bc67-6323-4971-a852-fa86076bd8aa))
(pin "10" (uuid a41ef2fb-0af7-474d-9a1e-9c912a01ff6b))
(pin "11" (uuid bb73d9bc-5179-4e43-9eae-b94e0eb59c1f))
(pin "12" (uuid 65315837-6e2e-4ecd-8759-319e4cea7032))
(pin "13" (uuid a1b1849e-044f-4c9b-a32f-a307cceec4eb))
(pin "14" (uuid b82866a6-71a2-4bd0-b8cd-917449236932))
(pin "7" (uuid d0c22809-3fdf-4267-aca7-d13a5cd288d1))
)
(symbol (lib_id "power:GND") (at 375.412 120.65 0) (unit 1)
@@ -11432,15 +11293,6 @@
(pin "5" (uuid 183833a8-040b-4ba3-807a-b833a904df7c))
(pin "6" (uuid 201d184b-7b0f-4824-a007-7a42ffa3185b))
(pin "7" (uuid 2c400c97-957c-4ba6-9d55-40dcf8a81ffb))
(pin "10" (uuid 8bed721e-0582-48dc-8187-6670c6fe02a6))
(pin "11" (uuid 09c7dd60-7daa-4408-aace-33223dcf0bc2))
(pin "12" (uuid 48a67817-c73a-481b-8887-fa0c0830e720))
(pin "13" (uuid ba7e6b92-c928-4f92-a271-96b8e62738c9))
(pin "14" (uuid b57660d0-90cf-4a3d-8400-f31c860d76e6))
(pin "15" (uuid 2902e1e1-c70e-45ef-aa14-e00d289e1fe1))
(pin "9" (uuid 44ab579e-237d-4b69-a927-9e295a07cc99))
(pin "16" (uuid 5b41d5ec-007e-4bd4-a2a2-857347e6312c))
(pin "8" (uuid e2b641fc-798b-4ecd-a86f-e0c82d02f9d1))
)
(symbol (lib_id "power:GND") (at 398.018 120.65 0) (unit 1)
@@ -11567,18 +11419,6 @@
)
(pin "1" (uuid f843aa59-5974-45a8-8f1c-4846a2800e32))
(pin "2" (uuid 093da910-d9bc-44e1-9e5e-2abecb68c45a))
(pin "3" (uuid 7df1a0fa-405b-4e17-8b5a-ae77baf2219d))
(pin "4" (uuid 96f88dad-3c49-4bd8-9234-89f784b07f1c))
(pin "5" (uuid 471495fe-252b-4f0b-8470-686a3c6221dd))
(pin "6" (uuid 0116113f-4c86-400e-80e1-6175941574dc))
(pin "8" (uuid 51e4f943-835c-4476-882a-7a3e4d26af2f))
(pin "9" (uuid dd2caa7b-e7b6-458c-bbe6-9ee4d2d6ae26))
(pin "10" (uuid e67478b8-907e-448f-9d1e-bcf59670879a))
(pin "11" (uuid 58b1bf9e-a4b1-45c7-bda9-ca0c5dbb1830))
(pin "12" (uuid 3e35d241-33bf-4456-8daf-c6ab3b1119a2))
(pin "13" (uuid 83dfac92-84bb-4294-8e83-88993079f668))
(pin "14" (uuid de54d837-f4b7-4cf7-a81c-938adf10fcad))
(pin "7" (uuid 0fc40bef-18cf-4821-9cb3-f36cf4358ad2))
)
(symbol (lib_id "Device:R") (at 186.436 111.252 90) (unit 1)
@@ -11695,52 +11535,6 @@
(property "Datasheet" "" (id 3) (at 287.02 107.442 0)
(effects (font (size 1.524 1.524)))
)
(pin "10" (uuid 4573b838-470c-4cd0-9786-6cc932344caa))
(pin "11" (uuid 03061bef-6029-435a-8c52-c3ab8bd5f0e4))
(pin "12" (uuid a655ef23-01a3-4028-9a58-0c7805547fec))
(pin "14" (uuid 3946998f-39d2-46f6-9e6f-591426da3d24))
(pin "15" (uuid 378814bd-4ffb-413d-9e70-9ee78e35f685))
(pin "16" (uuid 3fb15544-4451-49aa-a16f-d90cd5d3c2e3))
(pin "17" (uuid 2d3046ba-0906-41ad-9df3-9941e110127c))
(pin "18" (uuid dd6ce3f4-9a25-4dec-a134-1ca12dc9cf04))
(pin "19" (uuid b54d048e-6075-4647-b71d-429e378b293b))
(pin "2" (uuid 71f47bbb-1271-4fa4-9356-f356ceb286ec))
(pin "20" (uuid ba6ec220-debd-444b-9c64-11963b4c14a2))
(pin "21" (uuid 1efdba85-db9e-4762-a4e7-0d3a9e76977f))
(pin "22" (uuid 03edd7f0-aacb-4b40-8b6a-32e8ada40c84))
(pin "23" (uuid 86a1df0f-100f-445f-a32e-cf30029006ca))
(pin "24" (uuid 6897b7b0-f038-401d-b5ad-8005cddfddcc))
(pin "25" (uuid 0e573c80-fdde-446b-88cb-32b46fb63075))
(pin "26" (uuid f9f71155-af8b-495d-aa06-90f1ece6b6ce))
(pin "27" (uuid 87fc5146-30b5-4afb-97a4-34f39f63e981))
(pin "28" (uuid 6af2cad3-1a5e-484a-aead-785d7e708a85))
(pin "29" (uuid 42210ae4-f2e0-47d6-9858-08082c52f6d4))
(pin "3" (uuid f9bc07cb-1b3a-42a0-a1a8-14e98b0b1a94))
(pin "30" (uuid d9ddf81c-ece8-496d-99ab-f40dd3f95ea3))
(pin "31" (uuid fd57b678-cfdb-4383-85e6-775aea6f0e27))
(pin "32" (uuid cfe21da7-312f-4708-99f5-43c1ee18d4aa))
(pin "33" (uuid 243bb984-3fb6-45ca-be1c-c35231010be8))
(pin "34" (uuid a7182102-8f89-4e2e-9252-1175fbddfd92))
(pin "35" (uuid f21977b5-2535-42c5-a99a-f755b124522b))
(pin "36" (uuid 04c8be6b-702b-41c2-bd20-bad7f508d0b4))
(pin "37" (uuid eab2d464-1641-4ce3-83b2-523a18d6d533))
(pin "39" (uuid 231bf5c2-f094-4df2-993a-68d53479b961))
(pin "4" (uuid eabb45c8-b438-476d-9acd-fa03e43fd995))
(pin "40" (uuid 24e3051e-ae2f-47a9-931e-21e05b9b0691))
(pin "41" (uuid d00290fa-7680-497e-b992-d2b5aff90495))
(pin "42" (uuid eaf0c236-0e0f-4b7d-9e7e-09853cadea40))
(pin "43" (uuid d08596da-3c6a-4725-99cb-248b1206282f))
(pin "44" (uuid 6142e2ac-d8a7-48dc-80ae-85f81c305d2d))
(pin "45" (uuid 3d100e69-01a6-4a47-9caa-6069399c800c))
(pin "46" (uuid 3e8cd463-1477-4ded-86a5-f3305a60f996))
(pin "47" (uuid 0997ccd0-4111-4936-b37c-ac8323eac75f))
(pin "48" (uuid 541ad014-76fb-4ad5-9539-86c1d904b0a3))
(pin "49" (uuid 8579a3d4-8081-4fe2-afe7-64d3f7575d03))
(pin "5" (uuid ba9ccb80-387d-4f20-8a15-3a05507cedf9))
(pin "6" (uuid 7896ab11-59df-46cf-906a-46a03f7fb23e))
(pin "7" (uuid 24921957-2f43-49db-8b7e-ab1ee0aca8ab))
(pin "8" (uuid 0408065f-7853-42c6-8104-3e481bc2860d))
(pin "9" (uuid 3bae65ba-263b-4582-a012-e6d16f896473))
(pin "1" (uuid d2434890-0174-4195-98c8-d920051d2d76))
(pin "13" (uuid aea30e0e-36d8-4348-8bd9-845ff148bced))
(pin "38" (uuid 895fdc1a-6cba-4857-86e0-cdf46cf7810d))
@@ -11955,18 +11749,6 @@
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74hc02" (id 3) (at 198.882 268.732 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid d80687dc-d793-48ab-96aa-5587f458d27a))
(pin "2" (uuid e116256e-8f08-4c19-9967-3c1b0697bf5d))
(pin "3" (uuid f67032f2-0ef3-417d-892e-025a6a35b6c9))
(pin "4" (uuid e05b5b58-e2fd-419d-a39f-28430735064f))
(pin "5" (uuid d8eb17ae-7649-4800-80b1-d0d15ccee7cd))
(pin "6" (uuid 6f79cfdc-03c1-407f-a84f-91f27baeafbb))
(pin "10" (uuid 812065ce-5f01-4f3f-94cf-cef416146be8))
(pin "8" (uuid ee974ca5-c429-4072-bb88-2107b1eadcfb))
(pin "9" (uuid dcc1b4d9-0694-4552-af63-e44fd3049231))
(pin "11" (uuid ac8d5d63-35ba-4ef1-b4e8-8bc719c6baf6))
(pin "12" (uuid 32f97159-f487-4078-8fcf-601f1198c7fe))
(pin "13" (uuid 543b7110-8cf8-4b19-bab1-5a27656e6eeb))
(pin "14" (uuid 34d70169-f461-4cbc-bd67-6d4abb544207))
(pin "7" (uuid 50aa8e35-be72-4125-bcf9-e795dd8a0d3f))
)
@@ -12023,27 +11805,15 @@
(in_bom yes) (on_board yes)
(uuid 873af6b6-9a62-48b1-9afe-8d3f03695547)
(property "Reference" "U11" (id 0) (at 301.244 146.558 0))
(property "Value" "74HC14" (id 1) (at 301.244 144.526 0))
(property "Value" "74HCT14" (id 1) (at 301.244 144.526 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket_LongPads" (id 2) (at 301.244 150.876 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74HC14" (id 3) (at 301.244 150.876 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 4bae2103-dba2-494c-9964-6026342a6a61))
(pin "2" (uuid 3565b236-ad54-4c18-8a08-db3c85a606b2))
(pin "3" (uuid 3df825ec-9b11-46c7-a8c0-d60af9138928))
(pin "4" (uuid 7f96a666-be9e-4c71-97d5-b7f84393d84b))
(pin "5" (uuid 0551fd65-2e97-4509-a8ca-0bcb8c35f0f9))
(pin "6" (uuid 56f5b349-7ac7-450e-b25f-ee062a61a5a8))
(pin "8" (uuid 2d0d97e8-4d71-475a-891b-b5fd8c48c5f8))
(pin "9" (uuid 0217bc67-6323-4971-a852-fa86076bd8ab))
(pin "10" (uuid a41ef2fb-0af7-474d-9a1e-9c912a01ff6c))
(pin "11" (uuid bb73d9bc-5179-4e43-9eae-b94e0eb59c20))
(pin "12" (uuid 65315837-6e2e-4ecd-8759-319e4cea7033))
(pin "13" (uuid a1b1849e-044f-4c9b-a32f-a307cceec4ec))
(pin "14" (uuid b82866a6-71a2-4bd0-b8cd-917449236933))
(pin "7" (uuid d0c22809-3fdf-4267-aca7-d13a5cd288d2))
)
(symbol (lib_id "power:GND") (at 386.842 156.21 0) (unit 1)
@@ -12272,18 +12042,6 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 179.07 268.224 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 25a56790-aca2-42bb-beb0-900be700f21e))
(pin "2" (uuid 47a14ce8-3e5b-4820-9c5d-29fbe2828c17))
(pin "3" (uuid 42399c56-e0f4-408a-9350-07cb5b6d7f4f))
(pin "4" (uuid 8eb26a33-1ed2-47a7-bea7-d4fb234cf84b))
(pin "5" (uuid 9d76b60f-aa66-4ba7-a436-dea5679b5dd9))
(pin "6" (uuid 0e0be57b-f293-4133-a71a-4018a5c708f7))
(pin "8" (uuid f16bf821-0bff-4070-96a8-85bb70622adf))
(pin "9" (uuid 328e2515-4e56-40fa-b869-71d9d148e80a))
(pin "10" (uuid d911cf16-dd9b-4153-aa56-cfe690cdf088))
(pin "11" (uuid b0ce1fb7-0632-4799-a680-b317da495dbd))
(pin "12" (uuid c67c2563-38e8-42ab-96d0-aa1899b2088b))
(pin "13" (uuid e2627a68-9841-4a4c-b3d2-2830ec14883c))
(pin "14" (uuid f73f81b1-4dd4-4f4f-ada1-428ca3696481))
(pin "7" (uuid 5e943cb8-ba57-4d23-b6c6-3bc096bf10a7))
)
@@ -12371,7 +12129,7 @@
(in_bom yes) (on_board yes)
(uuid 9afe87de-9bfb-4f0e-8863-52198a180967)
(property "Reference" "U11" (id 0) (at 181.61 235.712 0))
(property "Value" "74HC14" (id 1) (at 181.61 233.68 0))
(property "Value" "74HCT14" (id 1) (at 181.61 233.68 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket_LongPads" (id 2) (at 181.61 240.03 0)
(effects (font (size 1.27 1.27)) hide)
)
@@ -12380,18 +12138,6 @@
)
(pin "1" (uuid b12c2461-60ed-4d88-a0e5-3261e77822d2))
(pin "2" (uuid 5119eb2c-419a-46da-b091-7658b638518e))
(pin "3" (uuid b41e4517-98c8-4329-8bc0-978b2fa63c4f))
(pin "4" (uuid abb12b97-eb39-44f2-812c-40fa60185ec3))
(pin "5" (uuid 98dec1ce-67b4-42e9-af00-a07d1e4c70db))
(pin "6" (uuid 7fec7485-e5ae-4c8a-aadb-9dee232c823b))
(pin "8" (uuid 2d0d97e8-4d71-475a-891b-b5fd8c48c5f9))
(pin "9" (uuid 0217bc67-6323-4971-a852-fa86076bd8ac))
(pin "10" (uuid a41ef2fb-0af7-474d-9a1e-9c912a01ff6d))
(pin "11" (uuid bb73d9bc-5179-4e43-9eae-b94e0eb59c21))
(pin "12" (uuid 65315837-6e2e-4ecd-8759-319e4cea7034))
(pin "13" (uuid a1b1849e-044f-4c9b-a32f-a307cceec4ed))
(pin "14" (uuid b82866a6-71a2-4bd0-b8cd-917449236934))
(pin "7" (uuid d0c22809-3fdf-4267-aca7-d13a5cd288d3))
)
(symbol (lib_id "power:+5V") (at 137.922 143.764 0) (unit 1)
@@ -12473,20 +12219,6 @@
(property "Datasheet" "http://www.ti.com/lit/ds/symlink/sn74ls139a.pdf" (id 3) (at 219.71 268.478 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 13612cd9-b773-4a33-8e9a-3668b39fb070))
(pin "2" (uuid 2b5f0047-1a3f-4b0d-91ee-7b53167aa24c))
(pin "3" (uuid 437aa696-e56e-4d70-8acb-bd842651e13e))
(pin "4" (uuid 7885a3f2-33ec-4aff-bd6f-b10a71b329f6))
(pin "5" (uuid 37679587-bb0a-400e-ab1e-82c73c51661b))
(pin "6" (uuid ddfc2e44-416e-40aa-aff3-98b50a8d27bd))
(pin "7" (uuid 40b055d8-03e8-4a52-872c-52fca5daa643))
(pin "10" (uuid 8bed721e-0582-48dc-8187-6670c6fe02a7))
(pin "11" (uuid 09c7dd60-7daa-4408-aace-33223dcf0bc3))
(pin "12" (uuid 48a67817-c73a-481b-8887-fa0c0830e721))
(pin "13" (uuid ba7e6b92-c928-4f92-a271-96b8e62738ca))
(pin "14" (uuid b57660d0-90cf-4a3d-8400-f31c860d76e7))
(pin "15" (uuid 2902e1e1-c70e-45ef-aa14-e00d289e1fe2))
(pin "9" (uuid 44ab579e-237d-4b69-a927-9e295a07cc9a))
(pin "16" (uuid 5b41d5ec-007e-4bd4-a2a2-857347e6312d))
(pin "8" (uuid e2b641fc-798b-4ecd-a86f-e0c82d02f9d2))
)
@@ -12495,27 +12227,15 @@
(in_bom yes) (on_board yes)
(uuid 9d41c33f-c4c1-40d0-bff1-733a96e8404b)
(property "Reference" "U11" (id 0) (at 285.75 135.128 0))
(property "Value" "74HC14" (id 1) (at 285.75 133.096 0))
(property "Value" "74HCT14" (id 1) (at 285.75 133.096 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket_LongPads" (id 2) (at 285.75 139.446 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74HC14" (id 3) (at 285.75 139.446 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 4bae2103-dba2-494c-9964-6026342a6a62))
(pin "2" (uuid 3565b236-ad54-4c18-8a08-db3c85a606b3))
(pin "3" (uuid 3df825ec-9b11-46c7-a8c0-d60af9138929))
(pin "4" (uuid 7f96a666-be9e-4c71-97d5-b7f84393d84c))
(pin "5" (uuid 98dec1ce-67b4-42e9-af00-a07d1e4c70dc))
(pin "6" (uuid 7fec7485-e5ae-4c8a-aadb-9dee232c823c))
(pin "8" (uuid 2d0d97e8-4d71-475a-891b-b5fd8c48c5fa))
(pin "9" (uuid 0217bc67-6323-4971-a852-fa86076bd8ad))
(pin "10" (uuid a41ef2fb-0af7-474d-9a1e-9c912a01ff6e))
(pin "11" (uuid bb73d9bc-5179-4e43-9eae-b94e0eb59c22))
(pin "12" (uuid 65315837-6e2e-4ecd-8759-319e4cea7035))
(pin "13" (uuid a1b1849e-044f-4c9b-a32f-a307cceec4ee))
(pin "14" (uuid b82866a6-71a2-4bd0-b8cd-917449236935))
(pin "7" (uuid d0c22809-3fdf-4267-aca7-d13a5cd288d4))
)
(symbol (lib_id "power:GND") (at 27.432 265.049 0) (unit 1)
@@ -12561,20 +12281,8 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 187.325 60.452 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 9fdfc075-73d9-4ae1-b8d0-0c2b02fac986))
(pin "2" (uuid 53cfa486-4753-423f-9dc3-861c9460d8c7))
(pin "3" (uuid 42399c56-e0f4-408a-9350-07cb5b6d7f4d))
(pin "4" (uuid 8eb26a33-1ed2-47a7-bea7-d4fb234cf849))
(pin "5" (uuid 9d76b60f-aa66-4ba7-a436-dea5679b5dd7))
(pin "6" (uuid 0e0be57b-f293-4133-a71a-4018a5c708f5))
(pin "8" (uuid f16bf821-0bff-4070-96a8-85bb70622add))
(pin "9" (uuid 328e2515-4e56-40fa-b869-71d9d148e808))
(pin "10" (uuid d911cf16-dd9b-4153-aa56-cfe690cdf086))
(pin "11" (uuid b0ce1fb7-0632-4799-a680-b317da495dbb))
(pin "12" (uuid 6d5f86fa-3f67-4c51-9cb1-d497c3f206cf))
(pin "13" (uuid 98608ce4-907f-42d2-8245-3942449051fc))
(pin "14" (uuid f73f81b1-4dd4-4f4f-ada1-428ca369647f))
(pin "7" (uuid 5e943cb8-ba57-4d23-b6c6-3bc096bf10a5))
)
(symbol (lib_id "power:+5V") (at 386.842 115.57 0) (unit 1)
@@ -12670,20 +12378,8 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 286.512 176.276 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid e157f6e2-f0a0-40ec-82af-d1a4a142b541))
(pin "2" (uuid 7b0666c4-94c4-4b4f-9f3f-236cabc5fcaa))
(pin "3" (uuid 7df1a0fa-405b-4e17-8b5a-ae77baf2219e))
(pin "4" (uuid 96f88dad-3c49-4bd8-9234-89f784b07f1d))
(pin "5" (uuid 471495fe-252b-4f0b-8470-686a3c6221de))
(pin "6" (uuid 0116113f-4c86-400e-80e1-6175941574dd))
(pin "8" (uuid 51e4f943-835c-4476-882a-7a3e4d26af30))
(pin "9" (uuid dd2caa7b-e7b6-458c-bbe6-9ee4d2d6ae27))
(pin "10" (uuid e67478b8-907e-448f-9d1e-bcf59670879b))
(pin "11" (uuid 58b1bf9e-a4b1-45c7-bda9-ca0c5dbb1831))
(pin "12" (uuid 3e35d241-33bf-4456-8daf-c6ab3b1119a3))
(pin "13" (uuid 83dfac92-84bb-4294-8e83-88993079f669))
(pin "14" (uuid de54d837-f4b7-4cf7-a81c-938adf10fcae))
(pin "7" (uuid 0fc40bef-18cf-4821-9cb3-f36cf4358ad3))
)
(symbol (lib_id "power:GND") (at 289.56 115.062 0) (unit 1)
@@ -12857,20 +12553,8 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 287.02 199.39 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid e157f6e2-f0a0-40ec-82af-d1a4a142b542))
(pin "2" (uuid 7b0666c4-94c4-4b4f-9f3f-236cabc5fcab))
(pin "3" (uuid 32f49f5c-1642-40f9-9b18-9ad7321354eb))
(pin "4" (uuid 376bc595-dcc7-4f6b-87d6-97bff6b94452))
(pin "5" (uuid 533804da-2d24-4263-877d-f16bfbfd81ee))
(pin "6" (uuid 578592cd-b5cb-4d48-b2a0-2251221c79a3))
(pin "8" (uuid 51e4f943-835c-4476-882a-7a3e4d26af31))
(pin "9" (uuid dd2caa7b-e7b6-458c-bbe6-9ee4d2d6ae28))
(pin "10" (uuid e67478b8-907e-448f-9d1e-bcf59670879c))
(pin "11" (uuid 58b1bf9e-a4b1-45c7-bda9-ca0c5dbb1832))
(pin "12" (uuid 3e35d241-33bf-4456-8daf-c6ab3b1119a4))
(pin "13" (uuid 83dfac92-84bb-4294-8e83-88993079f66a))
(pin "14" (uuid de54d837-f4b7-4cf7-a81c-938adf10fcaf))
(pin "7" (uuid 0fc40bef-18cf-4821-9cb3-f36cf4358ad4))
)
(symbol (lib_id "Device:R_Network08") (at 31.242 69.469 90) (unit 1)
@@ -13186,20 +12870,8 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 187.325 73.787 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 08710212-7112-44d9-b6c8-2e81165ad1bf))
(pin "2" (uuid 90f76c30-f4d2-4d00-8ec6-02e06b949e31))
(pin "3" (uuid 42399c56-e0f4-408a-9350-07cb5b6d7f4e))
(pin "4" (uuid 8eb26a33-1ed2-47a7-bea7-d4fb234cf84a))
(pin "5" (uuid 9d76b60f-aa66-4ba7-a436-dea5679b5dd8))
(pin "6" (uuid 0e0be57b-f293-4133-a71a-4018a5c708f6))
(pin "8" (uuid f16bf821-0bff-4070-96a8-85bb70622ade))
(pin "9" (uuid 328e2515-4e56-40fa-b869-71d9d148e809))
(pin "10" (uuid d911cf16-dd9b-4153-aa56-cfe690cdf087))
(pin "11" (uuid b0ce1fb7-0632-4799-a680-b317da495dbc))
(pin "12" (uuid 6d5f86fa-3f67-4c51-9cb1-d497c3f206d0))
(pin "13" (uuid 98608ce4-907f-42d2-8245-3942449051fd))
(pin "14" (uuid f73f81b1-4dd4-4f4f-ada1-428ca3696480))
(pin "7" (uuid 5e943cb8-ba57-4d23-b6c6-3bc096bf10a6))
)
(symbol (lib_id "74xx:74HC245") (at 87.122 161.544 0) (unit 1)
@@ -13258,14 +12930,6 @@
(pin "4" (uuid 9587fb5f-5611-4cf1-9cbc-3266b9e74a85))
(pin "5" (uuid 7611e64f-5d32-47d0-b2d0-556ea903fad3))
(pin "6" (uuid 82bcd7d4-3cb3-45e6-a8e2-70ac5c470ca0))
(pin "10" (uuid c8bb0c9a-4a18-4c50-8458-2e404be460f8))
(pin "11" (uuid 69fcf607-e6fb-4830-9517-fe4ec6f5ad45))
(pin "12" (uuid f3fc77d0-92dd-4113-8833-356586ce3633))
(pin "13" (uuid b2c8224b-730d-4cb5-bc1f-d0be3f96c297))
(pin "8" (uuid c1615d0e-c441-4f89-b436-82004412de19))
(pin "9" (uuid 5c7dc3c6-d6f7-4aad-95d0-49576a6a5833))
(pin "14" (uuid b22ccddb-616b-4574-83bd-43ee7ff88ee5))
(pin "7" (uuid 30be24ca-4399-449e-8136-3f2718d5af1f))
)
(symbol (lib_id "Device:R") (at 166.624 137.414 90) (unit 1)
@@ -13333,18 +12997,6 @@
(property "Datasheet" "74xx/74hc_hct74.pdf" (id 3) (at 160.02 267.97 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 8f99d6ea-f96b-40e6-9a04-4ab5fd0930b1))
(pin "2" (uuid 5d5551e1-a33d-4104-8660-158dad8a6a57))
(pin "3" (uuid 5bd8f6a8-f0cc-46ea-97b8-3533e0465690))
(pin "4" (uuid eb3448b4-dd84-401f-9dd6-f2fe819b49e2))
(pin "5" (uuid 361ae140-753c-4ffd-b5d6-dca1a35f40fd))
(pin "6" (uuid 5c6ed10a-14c5-438c-b7ac-2130a5f620db))
(pin "10" (uuid c993b6cb-25fb-4c6f-bb59-d48e438da83e))
(pin "11" (uuid c8d1068b-1c54-4174-95c1-37a03dff9b1b))
(pin "12" (uuid c49804c5-51c4-45fa-97ab-350536614ade))
(pin "13" (uuid cb6006cd-c15a-4513-be5a-d8547623a083))
(pin "8" (uuid 10445ca9-78d8-44a3-880e-46faca1204d4))
(pin "9" (uuid 33c169ad-9106-4c9b-9bbb-6cee93b688a8))
(pin "14" (uuid 416807b3-0ba3-4311-983b-bebca4252eaa))
(pin "7" (uuid 91e8ac46-2762-444f-8f19-7db8009307f8))
)
@@ -13385,27 +13037,15 @@
(in_bom yes) (on_board yes)
(uuid dbc8c9af-f33d-4244-9cbb-abe15bde7419)
(property "Reference" "U11" (id 0) (at 244.348 234.95 0))
(property "Value" "74HC14" (id 1) (at 244.348 232.918 0))
(property "Value" "74HCT14" (id 1) (at 244.348 232.918 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket_LongPads" (id 2) (at 244.348 239.268 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74HC14" (id 3) (at 244.348 239.268 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid e3b00d1a-86fa-4003-adb4-d1371f72aced))
(pin "2" (uuid c74d1ac5-73dc-4e36-8617-c4795142ff14))
(pin "3" (uuid b41e4517-98c8-4329-8bc0-978b2fa63c50))
(pin "4" (uuid abb12b97-eb39-44f2-812c-40fa60185ec4))
(pin "5" (uuid 98dec1ce-67b4-42e9-af00-a07d1e4c70dd))
(pin "6" (uuid 7fec7485-e5ae-4c8a-aadb-9dee232c823d))
(pin "8" (uuid 2d0d97e8-4d71-475a-891b-b5fd8c48c5fb))
(pin "9" (uuid 0217bc67-6323-4971-a852-fa86076bd8ae))
(pin "10" (uuid a41ef2fb-0af7-474d-9a1e-9c912a01ff6f))
(pin "11" (uuid bb73d9bc-5179-4e43-9eae-b94e0eb59c23))
(pin "12" (uuid 65315837-6e2e-4ecd-8759-319e4cea7036))
(pin "13" (uuid a1b1849e-044f-4c9b-a32f-a307cceec4ef))
(pin "14" (uuid b82866a6-71a2-4bd0-b8cd-917449236936))
(pin "7" (uuid d0c22809-3fdf-4267-aca7-d13a5cd288d5))
)
(symbol (lib_id "power:+5V") (at 219.71 255.778 0) (unit 1)
@@ -13578,10 +13218,6 @@
(pin "7" (uuid c1b18d9b-b2ab-411a-be66-4b608bd87e7f))
(pin "8" (uuid e6aa6f71-c0bc-44a8-b6af-fd25e07bec37))
(pin "9" (uuid cd1cdfac-8bf0-4ac6-861c-ae16691b500a))
(pin "1" (uuid d2434890-0174-4195-98c8-d920051d2d77))
(pin "13" (uuid aea30e0e-36d8-4348-8bd9-845ff148bcee))
(pin "38" (uuid 895fdc1a-6cba-4857-86e0-cdf46cf7810e))
(pin "50" (uuid 1b5af669-6c08-49e7-aef6-dbae710c9785))
)
(symbol (lib_id "74xx:74HCT04") (at 187.325 101.092 0) (unit 6)
@@ -13595,20 +13231,8 @@
(property "Datasheet" "https://assets.nexperia.com/documents/data-sheet/74HC_HCT04.pdf" (id 3) (at 187.325 101.092 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 25a56790-aca2-42bb-beb0-900be700f21f))
(pin "2" (uuid 47a14ce8-3e5b-4820-9c5d-29fbe2828c18))
(pin "3" (uuid 42399c56-e0f4-408a-9350-07cb5b6d7f50))
(pin "4" (uuid 8eb26a33-1ed2-47a7-bea7-d4fb234cf84c))
(pin "5" (uuid 9d76b60f-aa66-4ba7-a436-dea5679b5dda))
(pin "6" (uuid 0e0be57b-f293-4133-a71a-4018a5c708f8))
(pin "8" (uuid f16bf821-0bff-4070-96a8-85bb70622ae0))
(pin "9" (uuid 328e2515-4e56-40fa-b869-71d9d148e80b))
(pin "10" (uuid d911cf16-dd9b-4153-aa56-cfe690cdf089))
(pin "11" (uuid b0ce1fb7-0632-4799-a680-b317da495dbe))
(pin "12" (uuid 6d5f86fa-3f67-4c51-9cb1-d497c3f206d1))
(pin "13" (uuid 98608ce4-907f-42d2-8245-3942449051fe))
(pin "14" (uuid f73f81b1-4dd4-4f4f-ada1-428ca3696482))
(pin "7" (uuid 5e943cb8-ba57-4d23-b6c6-3bc096bf10a8))
)
(symbol (lib_id "Connector:TestPoint") (at 329.692 221.742 270) (unit 1)
@@ -13781,20 +13405,9 @@
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74hc02" (id 3) (at 146.304 196.596 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid d80687dc-d793-48ab-96aa-5587f458d27b))
(pin "2" (uuid e116256e-8f08-4c19-9967-3c1b0697bf5e))
(pin "3" (uuid f67032f2-0ef3-417d-892e-025a6a35b6ca))
(pin "4" (uuid e05b5b58-e2fd-419d-a39f-284307350650))
(pin "5" (uuid d8eb17ae-7649-4800-80b1-d0d15ccee7ce))
(pin "6" (uuid 6f79cfdc-03c1-407f-a84f-91f27baeafbc))
(pin "10" (uuid 812065ce-5f01-4f3f-94cf-cef416146be9))
(pin "8" (uuid ee974ca5-c429-4072-bb88-2107b1eadcfc))
(pin "9" (uuid dcc1b4d9-0694-4552-af63-e44fd3049232))
(pin "11" (uuid ac8d5d63-35ba-4ef1-b4e8-8bc719c6baf7))
(pin "12" (uuid 32f97159-f487-4078-8fcf-601f1198c7ff))
(pin "13" (uuid 543b7110-8cf8-4b19-bab1-5a27656e6eec))
(pin "14" (uuid 5a6274f1-c1b4-4e61-a387-e24481ee2fc3))
(pin "7" (uuid 179be303-b3f5-4fbd-a9ac-aad80b796be1))
)
(symbol (lib_id "power:GND") (at 219.71 281.178 0) (unit 1)
@@ -14484,25 +14097,25 @@
(reference "U10") (unit 7) (value "74HCT04") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
)
(path "/9afe87de-9bfb-4f0e-8863-52198a180967"
(reference "U11") (unit 1) (value "74HC14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
(reference "U11") (unit 1) (value "74HCT14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
)
(path "/5e60ccf7-42d3-46c6-8396-05d33b7f1d6c"
(reference "U11") (unit 2) (value "74HC14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
(reference "U11") (unit 2) (value "74HCT14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
)
(path "/9d41c33f-c4c1-40d0-bff1-733a96e8404b"
(reference "U11") (unit 3) (value "74HC14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
(reference "U11") (unit 3) (value "74HCT14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
)
(path "/58a8b3a1-a7aa-40fe-9a58-06c1422ea30c"
(reference "U11") (unit 4) (value "74HC14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
(reference "U11") (unit 4) (value "74HCT14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
)
(path "/873af6b6-9a62-48b1-9afe-8d3f03695547"
(reference "U11") (unit 5) (value "74HC14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
(reference "U11") (unit 5) (value "74HCT14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
)
(path "/dbc8c9af-f33d-4244-9cbb-abe15bde7419"
(reference "U11") (unit 6) (value "74HC14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
(reference "U11") (unit 6) (value "74HCT14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
)
(path "/4991d4a0-6bf5-4325-88e8-8eba5fb919d0"
(reference "U11") (unit 7) (value "74HC14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
(reference "U11") (unit 7) (value "74HCT14") (footprint "Package_DIP:DIP-14_W7.62mm_Socket_LongPads")
)
(path "/61bb57b3-b259-44c7-8355-3e1e40d84459"
(reference "U12") (unit 1) (value "74HCT139") (footprint "Package_DIP:DIP-16_W7.62mm_Socket_LongPads")

File diff suppressed because it is too large Load Diff

View File

@@ -7,6 +7,7 @@
(title_block
(title "Z8C MIO Board")
(date "2022-10-10")
(rev "2")
(comment 1 "Multi I/O Board for Z8C")
(comment 2 "Interrupt-Controller, GPIO, PS2, I2C, RTC, FPU/APU and Speaker")
)
@@ -555,7 +556,7 @@
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(arc (start -1.016 5.08) (mid -4.6228 2.1214) (end -4.318 -2.54)
(arc (start -1.016 5.08) (mid -4.6243 2.1182) (end -4.318 -2.54)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type none))
)
@@ -655,7 +656,7 @@
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(arc (start 4.318 -2.54) (mid 4.6661 2.1322) (end 1.016 5.08)
(arc (start 4.318 -2.54) (mid 4.6646 2.1357) (end 1.016 5.08)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type none))
)
@@ -7877,7 +7878,7 @@
(effects (font (size 1.27 1.27)) (justify right bottom))
(uuid 9408bcfe-7d8e-4d8e-b856-915f44d6875f)
)
(label "/IOREQ" (at 47.371 29.337 0)
(label "~{#IOREQ}" (at 47.371 29.337 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
(uuid 94e98a14-b840-4bd3-8b50-4cb7ea6d3846)
)
@@ -8659,7 +8660,7 @@
(in_bom yes) (on_board yes)
(uuid 2ddc9543-f16e-46ae-8d39-b2918a5be067)
(property "Reference" "U7" (id 0) (at 267.081 39.7002 0))
(property "Value" "74LS06" (id 1) (at 267.081 42.0116 0))
(property "Value" "7406" (id 1) (at 267.081 42.0116 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket" (id 2) (at 267.081 47.752 0)
(effects (font (size 1.27 1.27)) hide)
)
@@ -8668,18 +8669,6 @@
)
(pin "1" (uuid 27447be2-9a03-4c74-8e22-82959aca38d5))
(pin "2" (uuid 01dbc623-6e4e-457b-a607-3860dc6c0eb4))
(pin "3" (uuid 51b2997d-b40d-4e0c-81eb-c728c8350e74))
(pin "4" (uuid bee0e1c1-b842-441d-85d5-538540a63a14))
(pin "5" (uuid 2e484963-b269-42b3-9486-24df28465ede))
(pin "6" (uuid d07f21eb-823b-4131-acb0-2fd90e8c76eb))
(pin "8" (uuid 4cf23c4a-c03c-4897-b0d2-e5da4fd74f72))
(pin "9" (uuid e57bcf50-81ce-4f5a-839b-106d5a693317))
(pin "10" (uuid 2d21e9d4-5f95-4bd5-bafa-7195b8da2940))
(pin "11" (uuid 31aad1ff-f8eb-44a2-b0e6-6f2533cadd8a))
(pin "12" (uuid 08278bf4-f6e9-44ff-9adf-6e32e38a8a34))
(pin "13" (uuid 2a66cc3a-c090-4ce0-a61f-f7e30ae6a985))
(pin "14" (uuid 5828e2b1-6c83-4929-88ca-4d736ceaf660))
(pin "7" (uuid 86b01ef4-965c-4060-a9de-b3e20d6f4e09))
)
(symbol (lib_id "Connector_Generic:Conn_02x05_Odd_Even") (at 40.386 83.312 90) (unit 1)
@@ -8945,27 +8934,15 @@
(in_bom yes) (on_board yes)
(uuid 41c1dbec-e911-4a87-9b07-0f0166125df9)
(property "Reference" "U7" (id 0) (at 148.971 60.6552 0))
(property "Value" "74LS06" (id 1) (at 148.971 62.9666 0))
(property "Value" "7406" (id 1) (at 148.971 62.9666 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket" (id 2) (at 148.971 68.707 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74LS06" (id 3) (at 148.971 68.707 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 12571566-c362-4020-afc1-5afc9948a4d0))
(pin "2" (uuid e132594a-a911-409b-854b-e36aba5c0a64))
(pin "3" (uuid 85efdcf2-b2af-4074-a8ec-46a9b78ab437))
(pin "4" (uuid be3610cd-c4e5-4eef-a19b-2490be584221))
(pin "5" (uuid bf813ca6-c9b0-496b-a4b2-6cd15e7fa5b4))
(pin "6" (uuid 5a6be6a3-f5c4-4588-90de-f3e15e2ac316))
(pin "8" (uuid 2b4ec33e-09ed-40fd-ad97-076778448929))
(pin "9" (uuid 327dfcfa-f52d-4951-82e8-820abf17d1b1))
(pin "10" (uuid 48cff926-046a-41be-a025-825acb6f92b4))
(pin "11" (uuid 44b809f0-e72f-40a9-941f-7790af2b360e))
(pin "12" (uuid 3db97f22-fffc-4d92-abfa-084b23de5826))
(pin "13" (uuid 0385f96f-cf91-4f9c-b9eb-23c5fe1ca780))
(pin "14" (uuid e82faff1-b691-4551-94bb-116aeaab8477))
(pin "7" (uuid 0283e81d-c3e6-41a4-9f69-b9a54cb0d915))
)
(symbol (lib_id "Device:R_Network08") (at 24.511 59.817 90) (unit 1)
@@ -9069,33 +9046,21 @@
(in_bom yes) (on_board yes)
(uuid 4572e6a2-b528-408d-9ec4-54ae9300ab05)
(property "Reference" "U7" (id 0) (at 267.081 91.7702 0))
(property "Value" "74LS06" (id 1) (at 267.081 94.0816 0))
(property "Value" "7406" (id 1) (at 267.081 94.0816 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket" (id 2) (at 267.081 99.822 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74LS06" (id 3) (at 267.081 99.822 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 42e15592-6be6-4195-9d8a-70697df9dc26))
(pin "2" (uuid dfc6c58b-b2d7-478a-8280-348471912cc8))
(pin "3" (uuid b4182176-94b4-4042-a047-ced8894735c1))
(pin "4" (uuid 0383ded5-fa86-42c2-b225-b677173a2e63))
(pin "5" (uuid 88460b60-161e-4b15-8289-16f0dcbec01a))
(pin "6" (uuid bdd9a6a6-57ba-43f2-9b3d-d661f1860a8b))
(pin "8" (uuid 186b958a-3ebe-4f29-b8d5-7754a52a3fbe))
(pin "9" (uuid 3cbdfe65-dc8b-428d-8079-dd4a88996c3a))
(pin "10" (uuid c85ace76-c1ae-478f-9c4b-eef923a2984d))
(pin "11" (uuid 128013b4-92f0-4f80-a481-fccffd513291))
(pin "12" (uuid 9d209bce-2b1d-4859-b729-fb49b74adacd))
(pin "13" (uuid a7409129-13bc-4d7a-8cc3-d55e89e4a486))
(pin "14" (uuid 5580f029-0d73-4d2c-af54-06e31f51c0c7))
(pin "7" (uuid a6f5341c-35ea-43dc-87a2-8a9e0eb79996))
)
(symbol (lib_id "power:GND") (at 82.296 177.292 0) (unit 1)
(in_bom yes) (on_board yes) (fields_autoplaced)
(uuid 45ab63b2-69a7-4901-a31d-21ac38882192)
(property "Reference" "#PWR?" (id 0) (at 82.296 183.642 0)
(property "Reference" "#PWR0101" (id 0) (at 82.296 183.642 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Value" "GND" (id 1) (at 82.296 181.737 0))
@@ -9585,27 +9550,15 @@
(in_bom yes) (on_board yes)
(uuid 63358355-bbc3-4796-abc2-498c9d08668f)
(property "Reference" "U7" (id 0) (at 267.081 70.1802 0))
(property "Value" "74LS06" (id 1) (at 267.081 72.4916 0))
(property "Value" "7406" (id 1) (at 267.081 72.4916 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket" (id 2) (at 267.081 78.232 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74LS06" (id 3) (at 267.081 78.232 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid ad09ce9c-7766-4f5c-b537-2abf9551f61d))
(pin "2" (uuid 0bfad6c9-9df6-4e45-b18a-5f16528a1f0c))
(pin "3" (uuid aadf8ee5-3a49-4003-ad80-644b5101f2a4))
(pin "4" (uuid bbbff0c8-2027-4667-b47f-a4c5832ff320))
(pin "5" (uuid eef85841-6613-4894-8b17-c0dd2cfaca66))
(pin "6" (uuid b386dfc1-01d9-4513-8046-a34156d32478))
(pin "8" (uuid f2ffbaa8-eec3-4e43-bf4f-06bf2c7b52eb))
(pin "9" (uuid 653fdf05-7ad5-427f-9ad5-b898b68fc587))
(pin "10" (uuid d29c636b-b3c5-457a-9201-57cf8aa780a0))
(pin "11" (uuid 28612e9d-7a66-4f6c-8213-95ea6c2f7e8b))
(pin "12" (uuid 523ab249-e8a0-459f-a478-e73ecd442c13))
(pin "13" (uuid e109b596-defe-4fa5-8030-057b98f07ef8))
(pin "14" (uuid 039b5e6d-01aa-4a6d-ae69-1ff629b7ab9d))
(pin "7" (uuid 5ffe0a63-1ea9-40af-83d8-b3d2717da57e))
)
(symbol (lib_id "power:+5V") (at 208.026 191.262 0) (unit 1)
@@ -9912,7 +9865,7 @@
(property "Reference" "U7" (id 0) (at 281.813 151.3586 0)
(effects (font (size 1.27 1.27)) (justify left))
)
(property "Value" "74LS06" (id 1) (at 281.813 153.67 0)
(property "Value" "7406" (id 1) (at 281.813 153.67 0)
(effects (font (size 1.27 1.27)) (justify left))
)
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket" (id 2) (at 275.971 152.527 0)
@@ -9921,18 +9874,6 @@
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74LS06" (id 3) (at 275.971 152.527 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 2bb74159-ccb4-441d-b391-98059a48dcfa))
(pin "2" (uuid f981648a-9051-4db0-ae04-701549d3961c))
(pin "3" (uuid 221290f4-0522-4f3d-864c-1a98b112eecc))
(pin "4" (uuid 575fdc89-9805-4266-a2d9-595fa263b11a))
(pin "5" (uuid 0ad96c7a-dc28-4121-8e73-05b2064bbec3))
(pin "6" (uuid 88888024-6d70-4fa8-9829-8295a00fc2c9))
(pin "8" (uuid 13b942f4-70b4-4c16-8221-c0d89d92d9f4))
(pin "9" (uuid eccc4eee-4290-4334-8514-2f5669abdefa))
(pin "10" (uuid 5162987c-ba0e-48a9-b339-be2441c4705f))
(pin "11" (uuid 7897f435-ca2e-4185-ae83-837e505bab70))
(pin "12" (uuid 5eb4aecd-e0df-42c4-9716-e679c869f63c))
(pin "13" (uuid 93aeef62-c4d4-4345-8487-cc4871395e12))
(pin "14" (uuid be1c73bc-0f44-45e1-b37d-345c106adc9c))
(pin "7" (uuid 21fd20d7-158a-4b0f-8ada-26bde74acf0c))
)
@@ -9957,27 +9898,15 @@
(in_bom yes) (on_board yes)
(uuid 7e042812-9033-4877-9152-b031dd83a033)
(property "Reference" "U7" (id 0) (at 267.081 18.1102 0))
(property "Value" "74LS06" (id 1) (at 267.081 20.4216 0))
(property "Value" "7406" (id 1) (at 267.081 20.4216 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket" (id 2) (at 267.081 26.162 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74LS06" (id 3) (at 267.081 26.162 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 62c1974a-816e-4477-a1c3-21a16c6b106b))
(pin "2" (uuid 5363aa10-d5af-4a6f-b8d7-b6072faeb087))
(pin "3" (uuid fb604a65-0306-459a-9d44-700105355cd4))
(pin "4" (uuid fa787232-ba39-44ff-b079-aae8fa43bf03))
(pin "5" (uuid 6b758e48-052b-4247-9b99-f1669fe75d16))
(pin "6" (uuid b284637f-e8af-425e-817c-730a06fc9348))
(pin "8" (uuid 272f63a1-f713-42f0-8f58-4fac6dd018cc))
(pin "9" (uuid a719c4b4-e195-436e-bb36-11336adf330b))
(pin "10" (uuid e6645d7c-8aa7-428c-9047-b9994c003579))
(pin "11" (uuid 656203b8-2496-463d-a564-4049bc862a59))
(pin "12" (uuid cf8be8e8-fba6-419a-9f21-3be1ca8645c2))
(pin "13" (uuid 2f677aa4-d5a3-4a37-97a5-385066770256))
(pin "14" (uuid ac5bf277-3416-495c-afc2-55995107a595))
(pin "7" (uuid f18c02a5-5547-491a-88ba-3ae46155e175))
)
(symbol (lib_id "power:+5V") (at 295.021 37.592 0) (unit 1)
@@ -10998,27 +10927,15 @@
(in_bom yes) (on_board yes)
(uuid cf1c44d8-562d-4508-a840-78f4aed0f2ee)
(property "Reference" "U7" (id 0) (at 148.971 75.8952 0))
(property "Value" "74LS06" (id 1) (at 148.971 78.2066 0))
(property "Value" "7406" (id 1) (at 148.971 78.2066 0))
(property "Footprint" "Package_DIP:DIP-14_W7.62mm_Socket" (id 2) (at 148.971 83.947 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74LS06" (id 3) (at 148.971 83.947 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 7dc93a63-5d3f-470f-b8af-1c0b7435de97))
(pin "2" (uuid 0952f70b-9a46-4df4-b908-9da98d2239e2))
(pin "3" (uuid b04253ec-2e78-4dad-96e6-b24e0b3db85d))
(pin "4" (uuid 8bd3d5e3-3f2e-4475-b713-d0fd6846ac45))
(pin "5" (uuid 86939526-6aac-4307-8324-878e6ec374bf))
(pin "6" (uuid 4e854bd9-3efd-4a6d-a627-29fba1dc4509))
(pin "8" (uuid 1f62391d-edad-497c-b927-6f2bee6a0668))
(pin "9" (uuid 0c029347-f6a0-49a4-96c0-0365a0ed1131))
(pin "10" (uuid 07bb4810-d4e8-4e11-aede-2cf469f26b8a))
(pin "11" (uuid 4548ad24-3854-4916-8586-10e817dd1efb))
(pin "12" (uuid 1492ac1f-a653-463d-9d50-acea1690ff83))
(pin "13" (uuid f66b34c7-9b8a-4b17-b98f-7541b8727f72))
(pin "14" (uuid ba972fd4-a0e9-422d-b4b8-a983b2ed4a1b))
(pin "7" (uuid c4ec2259-b1f1-4b5a-8fe9-70f14cafe0d8))
)
(symbol (lib_id "power:+12V") (at 378.206 29.972 0) (unit 1)
@@ -11056,13 +10973,15 @@
(symbol (lib_id "74xx:74HC245") (at 94.996 164.592 0) (unit 1)
(in_bom yes) (on_board yes) (fields_autoplaced)
(uuid d2e530a1-503a-40ca-b72f-2bf31ec0fb32)
(property "Reference" "U3" (id 0) (at 97.0154 143.637 0)
(property "Reference" "U3" (id 0) (at 97.0154 143.51 0)
(effects (font (size 1.27 1.27)) (justify left))
)
(property "Value" "74HC245" (id 1) (at 97.0154 146.177 0)
(property "Value" "74HC2T45" (id 1) (at 97.0154 146.05 0)
(effects (font (size 1.27 1.27)) (justify left))
)
(property "Footprint" "Package_DIP:DIP-20_W7.62mm_LongPads" (id 2) (at 94.996 164.592 0))
(property "Footprint" "Package_DIP:DIP-20_W7.62mm_LongPads" (id 2) (at 94.996 164.592 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "http://www.ti.com/lit/gpn/sn74HC245" (id 3) (at 94.996 164.592 0)
(effects (font (size 1.27 1.27)) hide)
)
@@ -12108,7 +12027,7 @@
(reference "#PWR0100") (unit 1) (value "+5V") (footprint "")
)
(path "/45ab63b2-69a7-4901-a31d-21ac38882192"
(reference "#PWR?") (unit 1) (value "GND") (footprint "")
(reference "#PWR0101") (unit 1) (value "GND") (footprint "")
)
(path "/8e7180ee-df11-413a-a15b-c8e45c120046"
(reference "BT1") (unit 1) (value "3V") (footprint "digikey-footprints:Battery_Holder_Coin_2032_BS-7")
@@ -12309,7 +12228,7 @@
(reference "U2") (unit 1) (value "GAL16V8") (footprint "Package_DIP:DIP-20_W7.62mm_LongPads")
)
(path "/d2e530a1-503a-40ca-b72f-2bf31ec0fb32"
(reference "U3") (unit 1) (value "74HC245") (footprint "Package_DIP:DIP-20_W7.62mm_LongPads")
(reference "U3") (unit 1) (value "74HC2T45") (footprint "Package_DIP:DIP-20_W7.62mm_LongPads")
)
(path "/44d50cf2-8bea-4112-9d30-477d02e50476"
(reference "U4") (unit 1) (value "74HC245") (footprint "Package_DIP:DIP-20_W7.62mm_LongPads")
@@ -12321,25 +12240,25 @@
(reference "U6") (unit 1) (value "PIO-DIP-40") (footprint "Package_DIP:DIP-40_W15.24mm")
)
(path "/2ddc9543-f16e-46ae-8d39-b2918a5be067"
(reference "U7") (unit 1) (value "74LS06") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
(reference "U7") (unit 1) (value "7406") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
)
(path "/7e042812-9033-4877-9152-b031dd83a033"
(reference "U7") (unit 2) (value "74LS06") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
(reference "U7") (unit 2) (value "7406") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
)
(path "/63358355-bbc3-4796-abc2-498c9d08668f"
(reference "U7") (unit 3) (value "74LS06") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
(reference "U7") (unit 3) (value "7406") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
)
(path "/4572e6a2-b528-408d-9ec4-54ae9300ab05"
(reference "U7") (unit 4) (value "74LS06") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
(reference "U7") (unit 4) (value "7406") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
)
(path "/41c1dbec-e911-4a87-9b07-0f0166125df9"
(reference "U7") (unit 5) (value "74LS06") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
(reference "U7") (unit 5) (value "7406") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
)
(path "/cf1c44d8-562d-4508-a840-78f4aed0f2ee"
(reference "U7") (unit 6) (value "74LS06") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
(reference "U7") (unit 6) (value "7406") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
)
(path "/7bf15ebd-56f9-4728-9fb7-e8f3a6246770"
(reference "U7") (unit 7) (value "74LS06") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
(reference "U7") (unit 7) (value "7406") (footprint "Package_DIP:DIP-14_W7.62mm_Socket")
)
(path "/b235e860-eb06-4b98-9bc2-972f8490f3de"
(reference "U8") (unit 1) (value "PCF8584") (footprint "Package_DIP:DIP-20_W7.62mm_LongPads")

File diff suppressed because it is too large Load Diff

107
Utility/build.sh Executable file
View File

@@ -0,0 +1,107 @@
#!/bin/bash
# Z8C Monitor build script
# by Dennis Gunia 2022
#
FILENAME="$2"
EEPROM_PART="AT28C256"
ROOT_DIR="$(git rev-parse --show-toplevel)"
PROJECT_DIR="$1"
if [ -f $1/properties.env ]; then
echo "Found $1/properties.env - Overriding local vars"
. $1/properties.env
fi
# Start of build script
echo -e "Start building Z8C monitor...\n"
echo -e "Root Directory : $ROOT_DIR"
echo -e "Project Directory : $PROJECT_DIR"
echo -e "ASM File : $FILENAME.asm\n\n"
# Check path
if [ ! -d "$PROJECT_DIR" ]; then
echo "Project directory not defined. Use ./build.sh <dir> <asm name>"
fi
if [ ! -f "$PROJECT_DIR/$FILENAME.asm" ]; then
echo "ASM file $PROJECT_DIR/$FILENAME.asm not found. Use ./build.sh <dir> <asm name>"
fi
cd $PROJECT_DIR
# Build
CMD="$ROOT_DIR/Utility/zmac $FILENAME.asm -I include -L --oo hex,lst"
echo -e "[BUILD] Execute: $CMD"
$CMD
RC_BUILD=$?
if [ $RC_BUILD -gt 0 ]; then
echo "[BUILD] Build failed! Exit."
exit $RC_BUILD
else
echo "[BUILD] Build successfull!"
fi
if [ $OPT_GEN_OBJFILE -gt 0 ]; then
echo "[OBJ] OPT_GEN_OBJFILE set! Generating object file zout/$FILENAME.bin"
CMD="objcopy --input-target=ihex --output-target=binary zout/$FILENAME.hex zout/$FILENAME.bin"
echo -e "[OBJ] Execute: $CMD"
$CMD
if [ $RC_BUILD -gt 0 ]; then
echo "[OBJ] Build failed! Exit."
exit $RC_BUILD
else
echo "[OBJ] Build successfull!"
echo "[OBJ] Binary size: $(stat -c %s zout/$FILENAME.bin) bytes"
fi
else
echo "[OBJ] OPT_GEN_OBJFILE not set! Skipping object file"
fi
if [ $OPT_GEN_MONFILE -gt 0 ]; then
echo "[MON] OPT_GEN_MONFILE set! Generating monitor file zout/$FILENAME.mon"
if [ -f zout/$FILENAME.mon ]; then
echo "[MON] Removing old .mon file"
rm zout/$FILENAME.mon
fi
while read p; do
LINE="!${p:3:4} $(echo ${p:9:-2} | sed 's/.\{2\}/& /g' | sed 's/\ $//')"
echo -e "$LINE" >> zout/$FILENAME.mon
done <<< "$(grep -e ':......00.*' zout/$FILENAME.hex )"
echo "[MON] Generated $(cat zout/$FILENAME.mon | wc -l) lines!"
else
echo "[OBJ] OPT_GEN_MONFILE not set! Skipping monitor file"
fi
if [ $OPT_GEN_SYMBOLTABLE -gt 0 ]; then
echo "[SYM] OPT_GEN_SYMBOLTABLE set! Generating symbol file zout/symbols.s"
echo "[SYM] Building Symbol File"
# generate call locations list
echo -e ";This file is generated by the build script.\n;Do not make any changes here!\n" > zout/symbols.s
sed -n '/Symbol Table:/,$p' zout/$FILENAME.lst | \
grep -v "Symbol Table:" | grep -v -e '^$' | \
grep -v = | awk '{printf("%s equ 0x%s\n",$1,$2)}' \
>> zout/symbols.s
echo "[SYM] Generated Symbol file @ zout/symbols.s"
else
echo "[SYM] OPT_GEN_SYMBOLTABLE not set! Skipping symbol file"
fi
if [ $OPT_WRITEROM -gt 0 ]; then
echo "[PGM] OPT_WRITEROM set! Starting programmer for $EEPROM_PART"
read -p "[PGM] Programm EEPROM? (y/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]
then
# programm EEPROM
minipro -p $EEPROM_PART -w zout/$FILENAME.hex -s
fi
else
echo "[PGM] OPT_WRITEROM not set! Skipping programming"
fi

BIN
Utility/zmac Executable file

Binary file not shown.