From a4cc3ad3504d634e379369862c9f9fd8eed379f3 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Thu, 16 May 2024 01:43:09 -0400 Subject: Add Jindrich Kubec's tools. --- jindroush/bas2boot/bas2boot.asm | 169 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 jindroush/bas2boot/bas2boot.asm (limited to 'jindroush/bas2boot/bas2boot.asm') diff --git a/jindroush/bas2boot/bas2boot.asm b/jindroush/bas2boot/bas2boot.asm new file mode 100644 index 0000000..af7752a --- /dev/null +++ b/jindroush/bas2boot/bas2boot.asm @@ -0,0 +1,169 @@ +;Boot stub for loading BASIC programs from short ATR files. +;(c) 1998-1999 Jindrich Kubec + +; 20070524 bkw: modified to assemble with dasm + processor 6502 + +SIOV = $E459 + +DOSVEC = $0A +RAMTOP = $6A +LOMEM = $80 +BOOT = $09 +BASICF = $03F8 +PORTB = $D301 + +EOPEN = $EF94 + +BAS_CONT = $A97A +BAS_EXEC = $B755 + +LOADER_START = $0700 +LOADER_END = $0800 + +BASMEMSTART = $0700 + +BASPTRSLEN = $0E +BASPTRSSTART = LOADER_END - BASPTRSLEN + + org LOADER_START + +BOOTST: .byte 0 + .byte (ENDBOOT-BOOTST+127)/128 + .WORD *-2 + .WORD MAIN_BEG + + CLC +RTS_INSTR: RTS + + ;used for extractor +ORI_LEN: .WORD 0 + +MAIN_BEG: + LDX #
header + JSR $C642 + + LDX #padding + JSR $C642 + + ;copy pointers to correct area, add $700 + LDX #BASPTRSLEN - 1 +SETVECT: CLC + LDA BASPTRSSTART,X + ADC #>BASMEMSTART + STA LOMEM,X + DEX + LDA BASPTRSSTART,X + STA LOMEM,X + DEX + BPL SETVECT + + LDA #$31 ;D + STA $300 + LDA #$01 ;1 + STA $301 + LDA #$52 ;read + STA $302 + LDA #$80 ;$80 bytes + STA $308 + LDA #$00 + STA $309 + STA $30B + + LDA $82 ;buffer address + STA $304 + LDA $83 + STA $305 + + ;starting sector + LDA # ( (ENDBOOT-BOOTST+127)/128 ) +1 + STA $30A +SIO_CONT: + LDA #$40 ;read + STA $303 + + JSR SIOV + LDA $303 + CMP #$01 + BEQ NOERR + JSR $C63E +AGAIN: JMP AGAIN ;dynamic halt + + ;move buffer pointer +NOERR: + + ;LDA $304 + ;CLC + ;ADC $308 + ;STA $304 + ;LDA $305 + ;ADC $309 + ;STA $305 + + ;this does the same as the above, but is shorter + CLC + LDX #$FE +LP0: LDA $304 - $FE,X + ADC $308 - $FE,X + STA $304 - $FE,X + INX + BNE LP0 + + ;increment sector number + INC $30A + BNE NX1 + INC $30B +NX1: + ;decrement number of sectors to load + LDA SECTORS + BNE NX2 + DEC SECTORS+1 + BMI BAS_RUN +NX2: DEC SECTORS + JMP SIO_CONT + +BAS_RUN: LDX #$FF + TXS + + LDA #$0A + STA $C9 + LDA #$00 + STA BOOT + STA BASICF + + ;turn on basic + LDA #$FD + STA PORTB + + ;set stack + LDA #>BAS_CONT + PHA + LDA #BAS_EXEC + PHA + LDA #