From db83090cf0863341f18d4f222ff7585e53cd6c40 Mon Sep 17 00:00:00 2001 From: jonnosan Date: Sun, 26 Sep 2010 00:27:56 +0000 Subject: [PATCH] git-svn-id: http://svn.code.sf.net/p/netboot65/code@282 93682198-c243-4bdb-bd91-e943c89aac3b --- client/v1541/Makefile | 35 +++ client/v1541/v1541.cfg | 25 ++ client/v1541/v1541.d64 | Bin 0 -> 174848 bytes client/v1541/v1541.map | 605 +++++++++++++++++++++++++++++++++++++++++ client/v1541/v1541.prg | Bin 0 -> 5710 bytes client/v1541/v1541.s | 200 ++++++++++++++ 6 files changed, 865 insertions(+) create mode 100644 client/v1541/Makefile create mode 100644 client/v1541/v1541.cfg create mode 100644 client/v1541/v1541.d64 create mode 100644 client/v1541/v1541.map create mode 100644 client/v1541/v1541.prg create mode 100644 client/v1541/v1541.s diff --git a/client/v1541/Makefile b/client/v1541/Makefile new file mode 100644 index 0000000..2f7d4d2 --- /dev/null +++ b/client/v1541/Makefile @@ -0,0 +1,35 @@ +AS=ca65 +LD=ld65 +CFLAGS=-Oirs -t $(TARGET) +AFLAGS= + +INCFILES=\ + ../inc/common.i\ + ../inc/commonprint.i\ + ../inc/net.i\ + ../inc/menu.i\ + ../inc/kipper_constants.i\ + ../inc/version.i\ + +IP65LIB=../ip65/ip65_tcp.lib + +C64PROGLIB=../drivers/c64prog.lib + +all: v1541.prg v1541.d64 + + +%.o: %.s $(INCFILES) + $(AS) $(AFLAGS) $< + +%.d64: %.prg + ripxplore.rb $*.d64 -I CbmDos -a $*.prg + +%.prg: %.o $(IP65LIB) $(C64PROGLIB) $(INCFILES) v1541.cfg + $(LD) -m $*.map -vm -C v1541.cfg -o $*.prg $(AFLAGS) $< $(IP65LIB) $(C64PROGLIB) + + +clean: + rm -f *.o *.bin *.map *.prg *.d64 + +distclean: clean + rm -f *~ diff --git a/client/v1541/v1541.cfg b/client/v1541/v1541.cfg new file mode 100644 index 0000000..e81268c --- /dev/null +++ b/client/v1541/v1541.cfg @@ -0,0 +1,25 @@ + +MEMORY { + IP65ZP: start = $A3, size = $12, type = rw; + STARTRAM: start = $07FF, size = $4000, file = %O; + UNDERBASIC: start = $A000, size = $2000, define = yes, file = %O; + HIRAM: start = $C000, size = $01000; + +} + + + SEGMENTS { + IP65ZP: load = IP65ZP, type = zp; + ZEROPAGE: load = IP65ZP, type = zp; + STARTUP: load = STARTRAM, type = rw; + CODE: load = STARTRAM, run=UNDERBASIC, type = ro,define = yes; + RODATA: load = STARTRAM, run=UNDERBASIC, type = ro,define = yes; + DATA: load = STARTRAM, run=UNDERBASIC, type = rw, define = yes; + IP65_DEFAULTS: load = STARTRAM, run= HIRAM, type = ro, define = yes; + CODESTUB: load STARTRAM, run= HIRAM, type = rw, define = yes; + SELF_MODIFIED_CODE: load = STARTRAM, run=HIRAM, type = rw,define = yes; + + BSS: load = HIRAM, type = bss; + TCP_VARS: load = HIRAM, type = bss; + + } diff --git a/client/v1541/v1541.d64 b/client/v1541/v1541.d64 new file mode 100644 index 0000000000000000000000000000000000000000..ab4cd9ccbe4f8fa82a1cc9dbb6522cb6c8590484 GIT binary patch literal 174848 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 + bne @not_installed + ldax #already_installed + jsr print + jmp @done +@not_installed: + stax old_load_vector + ldax #load_handler + stax ILOAD + ldax #installed + jsr print + +@done: + jsr swap_basic_in + + rts + +__copymem: + sta end + ldy #0 + + cpx #0 + beq @tail + +: lda (copy_src),y + sta (copy_dest),y + iny + bne :- + inc copy_src+1 ;next page + inc copy_dest+1 ;next page + dex + bne :- + +@tail: + lda end + beq @done + +: lda (copy_src),y + sta (copy_dest),y + iny + cpy end + bne :- + +@done: + rts + +end: .byte 0 +installed: .byte "V1541 INSTALLED",0 + +already_installed: .byte "V1541 ALREADY INSTALLED",0 +.code + +load_dev_2: + inc $d020 + clc + jmp swap_basic_in + + +print: + sta pptr + stx pptr + 1 + +@print_loop: + ldy #0 + lda (pptr),y + beq @done_print + jsr print_a + inc pptr + bne @print_loop + inc pptr+1 + bne @print_loop ;if we ever get to $ffff, we've probably gone far enough ;-) +@done_print: + rts + + +.segment "CODESTUB" + +swap_basic_out: + lda $01 + and #$FE + sta $01 + rts + +swap_basic_in: + lda $01 + ora #$01 + sta $01 + rts + +load_handler: + ldx $BA ; Current Device Number + cpx #$02 + beq :+ + .byte $4c ;jmp +old_load_vector: + .word $ffff + : + jsr swap_basic_out + jmp load_dev_2 + \ No newline at end of file