summaryrefslogtreecommitdiff
path: root/misc/sims/z80sim/example
diff options
context:
space:
mode:
Diffstat (limited to 'misc/sims/z80sim/example')
-rw-r--r--misc/sims/z80sim/example/Makefile44
-rw-r--r--misc/sims/z80sim/example/example.asm84
2 files changed, 128 insertions, 0 deletions
diff --git a/misc/sims/z80sim/example/Makefile b/misc/sims/z80sim/example/Makefile
new file mode 100644
index 000000000..1b12d3d75
--- /dev/null
+++ b/misc/sims/z80sim/example/Makefile
@@ -0,0 +1,44 @@
+AS = /usr/local/bin/as-z80
+ASFLAGS = -xlosp
+
+CPP = /usr/local/bin/sdcpp
+CPPFLAGS = -D__ASSEMBLY__
+
+CC = /usr/local/bin/sdcc
+CFLAGS = -mz80 --stack-auto --int-long-reent --float-reent
+
+LD = /usr/local/bin/link-z80
+LDFLAGS =
+
+ASMEXT = .asm
+OBJEXT = .rel
+LIBEXT = .lib
+EXEEXT = .hex
+
+ASRCS = example.asm
+AOBJS = $(ASRCS:$(ASMEXT)=$(OBJEXT))
+
+CSRCS =
+COBJS = $(CSRCS:.c=$(OBJEXT))
+
+SRCS = $(SSRCS) $(CSRCS)
+OBJS = $(AOBJS) $(COBJS)
+
+BIN = example$(EXEEXT)
+
+all: $(BIN)
+default: $(BIN)
+
+$(AOBJS): $(ASRCS)
+ $(AS) $(ASFLAGS) $@ $<
+
+$(COBJS) $(TESTOBJS): %$(OBJEXT): %.c
+ $(CC) -c $(CFLAGS) $< -o $@
+
+$(BIN): $(OBJS)
+ $(CC) $(LDFLAGS) $< -o $@
+
+clean:
+ @rm -f $(BIN) *.o *.rel *.lst *.sym *.adb *.ihx *.map *.mem *.rst *.lnk *~
+
+distclean: clean
diff --git a/misc/sims/z80sim/example/example.asm b/misc/sims/z80sim/example/example.asm
new file mode 100644
index 000000000..ae0fc4f41
--- /dev/null
+++ b/misc/sims/z80sim/example/example.asm
@@ -0,0 +1,84 @@
+;************************************************************************
+; example.s
+;************************************************************************
+
+ .title z80sim Test
+ .module example
+
+;************************************************************************
+; Constants
+;************************************************************************
+
+ STACKBASE == 0xFFFF
+
+;************************************************************************
+; Data
+;************************************************************************
+
+ .area DATA (ABS,OVR)
+ .org 0x8000
+hello:
+ .ascii "Hello, World!\n\0"
+
+;************************************************************************
+; Reset entry point
+;************************************************************************
+
+ .area TEXT (ABS,OVR)
+ .org 0x0000
+ di ; Disable interrupts
+ ld SP, #STACKBASE ; Set stack pointer
+ im 1 ; Set interrupt mode 1
+ jp start ; jump to start of program
+
+;************************************************************************
+; Interrupt handler
+;************************************************************************
+
+ .org 0x0038 ; Int mode 1
+ reti ; return from interrupt
+
+;************************************************************************
+; NMI interrupt handler
+;************************************************************************
+
+ .org 0x0066
+ retn
+
+;************************************************************************
+; Start of program
+;************************************************************************
+
+ .org 0x0100
+start:
+ ;ei ; Enable interrrupts
+ ld hl, #hello ; Say hello
+ call print
+
+forever: ; Then stop execution
+ jp forever
+
+;******************************************************************
+; print *
+; Funktion....: Sen tekst and data with serielport *
+; Input.......: hl points at text start adr *
+; Output......: Text to serielport *
+; uses........: a,hl*
+; call........: TX_BUSY tst 28-4-1994 *
+;******************************************************************
+
+print:
+ push af
+loop:
+ ld a, (hl) ; Get character to print
+ cp #0 ; Null terminates the string
+ jp z, done
+
+ out (0xbe), a ; Send character
+ inc hl ; Increment to next character
+ jp loop ; Loop til done
+done:
+ pop af
+ ret
+
+