;:sys36864 ;.opt oo base =2379 *= $c000 ; base ga =186 stp =254 jmp run t1 .byte "\x93\x05\x11n-h-link v1.0 \x99(c) nikolaus heusler 11.93\x11" .byte "dieser linker verbindet ein basicpro-" .byt 13 .byte "gramm mit einem zeichensatz und mehreren" .byte "maschinenprogrammen bzw. datenfiles so," brk t2 .byte " dass sich ein einziges programm ergibt," .byte " das mit run gestartet werden kann." .byt 13 .byte "\x11n-h-link arbeitet mit geraet #\x05" brk fload ldy #>820 jsr $ffbd lda #2 ldy #0 ldx ga jsr $ffba jsr $ffc0 ds ldx #15 jsr $ffc6 jsr 65508 cmp #"0" beq dok pha jsr primm .byt 13 .byte "\x96achtung: " brk pla jsr 65490 dl1 jsr 65508 jsr $ffd2 cmp #13 bne dl1 jmp err dok jsr 65508 cmp #13 bne dok jmp $ffcc hexout pha lsr lsr lsr lsr jsr hex1 pla hex1 and #15 tax lda hext,x jmp $ffd2 hext .byte "0123456789abcdef" primm pla sta 251 pla sta 252 pr1 inc 251 bne pr2 inc 252 pr2 ldy #0 lda (251),y beq pr3 jsr $ffd2 bcc pr1 pr3 lda 252 pha lda 251 pha rts clo2 jsr $ffcc lda #2 jsr $ffc3 jmp ds in2 ldx #2 jmp $ffc6 run cli tsx stx stp jsr 65409 lda #0 sta 53280 sta 53281 lda ga cmp #8 bcs ad lda #8 sta ga ad lda #t1 jsr $ab1e lda #t2 jsr $ab1e ldx ga lda #0 jsr $bdcd ldx ga lda #15 tay jsr $ffba lda #0 jsr $ffbd jsr $ffc0 jsr primm .byt 13 .byte "\x11\x99basicprogramm-name? \x05" brk ldx #0 l1 jsr $ffcf cmp #13 beq l2 sta 820,x inx bne l1 l2 jsr $aad7 txa bne l3 err jsr $ffcc ldx stp txs jsr primm .byt 13 .byte "\x96fehler - programm abgebrochen.\x05" .byt 13,0 lda #2 jsr $ffc3 lda #15 jsr $ffc3 jmp fini l3 ldx #<820 jsr fload lda #puff sta 2 sty 3 jsr in2 jsr primm .byt 13 .byte "\x99startadresse original: $\x05" brk jsr 65508 pha jsr 65508 jsr hexout pla jsr hexout lda #236 sta 2144 jsr primm .byt 13 .byte "\x99\x11lade basicprogramm" .byt 13,0 l4 lda 144 bne l5 jsr 65508 ldy #0 sta (2),y inc 2 bne l4 inc 3 bne l4 l5 jsr clo2 jsr primm .byte "\x11falls kein neuer zeichensatz erwuenscht," .byte "bitte stern '*' eingeben!" .byt 13 .byte "\x11zeichensatz-name? \x05*\x9d" brk ldx #0 stx 2158 l6 jsr $ffcf cmp #13 beq l7 sta 821,x inx bne l6 l7 jsr $aad7 txa bne l8 jmp err l8 stx 820 lda 821 cmp #"*" bne font sta 2158 jmp nofont font lda 2 sec sbc #diff tax sty 2162 sty 2168 sty 2174 sty 2180 sty 2186 sty 2192 sty 2198 sty 2204 stx 2163 inx stx 2169 inx stx 2175 inx stx 2181 inx stx 2187 inx stx 2193 inx stx 2199 inx stx 2205 jsr primm .byte "\x99\x11lade zeichensatz" .byt 13,0 lda 820 ldx #<821 jsr fload jsr in2 jsr 65508 jsr 65508 la lda 144 bne l9 jsr 65508 ldy #0 sta (2),y inc 2 bne la inc 3 bne la l9 jsr clo2 nofont lda 2 sec sbc #diff sta 2230 jsr primm .byt 13 .byte "\x99jetzt werden die datenfiles (beispiel:" .byt 13 .byte "maschinenprogramm) angegeben, die in" .byt 13 .byte "das komplett-file gelinkt werden sollen." .byte "\x11einzeldateien codiert speichern? \x05j/n\x9d\x9d\x9d" brk jn jsr 65508 cmp #"j" beq ja cmp #"n" bne jn ja jsr 65490 ldx #0 stx 2279 cmp #"n" beq nein lda #70 sta 2279 nein jsr primm .byte " " .byt 13,0 lda #1 sta 6 n1 jsr primm .byt 13 .byte "\x99bitte dateinamen nr. \x05" brk ldx 6 lda #0 jsr $bdcd inc 6 jsr primm .byte " \x99eingeben!" .byt 13 .byte "wenn fertig, nur stern '*' eingeben!" .byt 13 .byte "\x11dateiname? \x05*\x9d" brk ldx #0 n2 jsr $ffcf cmp #13 beq n3 sta 820,x inx bne n2 n3 jsr $aad7 txa bne n4 jmp err n4 ldx 820 cpx #"*" bne n9 jmp fertig n9 ldx #<820 jsr fload jsr primm .byt 13 .byte "\x99ladeadresse: $\x05" brk jsr in2 jsr 65508 sta 4 jsr 65508 sta 5 jsr hexout lda 4 jsr hexout lda 5 cmp #224 bcc bok nobok jsr primm .byt 13 .byte "\x11\x96es sind nur adressen von $0a00 bis $df00" .byte "zugelassen!\x11" brk jmp err bok cmp #$0a bcc nobok ldy #0 sty 247 sty 248 lda 5 sta (2),y iny lda 4 sta (2),y lda 2 sta 4 clc adc #4 sta 2 lda 3 sta 5 adc #0 sta 3 lb lda 144 bne lc inc 247 bne ld inc 248 ld jsr 65508 ldy #0 eor 2279 sta (2),y inc 2 bne lb inc 3 bne lb lc ldy #2 lda 247 sta (4),y iny lda 248 sta (4),y jsr clo2 jsr primm .byt 13 .byte "\x99anzahl bytes: \x05" brk ldx 247 lda 248 jsr $bdcd jsr $aad7 jmp n1 fertig lda #0 tay sta (2),y inc 2 bne fe1 inc 3 fe1 jsr primm .byt 13 .byte "\x99\x11das fertige file kann nun gespeichert" .byt 13 .byte "werden." .byt 13 .byte "\x11gewuenschter name? \x05" brk ldx #0 fe2 jsr $ffcf cmp #13 beq fe3 sta 820,x inx bne fe2 fe3 jsr $aad7 txa bne fe4 jmp err fe4 ldx #<820 ldy #>820 jsr $ffbd lda #2 ldx ga ldy #1 jsr $ffba jsr $ffc0 jsr ds ldx #2 jsr $ffc9 lda #1 sta 4 jsr 65490 lda #8 sta 5 jsr 65490 fe5 ldy #0 lda (4),y jsr 65490 inc 4 bne fe6 inc 5 fe6 lda 4 cmp #base bne fe5 lda #puff sta 5 fe7 ldy #0 lda (4),y jsr 65490 inc 4 bne fe8 inc 5 fe8 lda 4 cmp 2 bne fe7 lda 5 cmp 3 bne fe7 jsr $ffcc lda #2 jsr $ffc3 jsr ds jsr primm .byt 13 .byte "\x99vorgang beendet. alles ok." .byt 13,0 fini lda #76 sta 2144 rts puff =* diff =puff-base