From: Michael McIntosh (cc65_at_lifepod.com)
Date: 2003-02-11 21:00:46
I am writing a program that runs automatically upon loading by overwriting the basic warm start vector while loading and causing it to execute code at $02A7 when it finishes loading. That code, in turn, loads another program and executes it. I am using the C64 kernal LOAD routine ($FFD5) to load a file in assembly language. If the file is not found, I wish to print out a "FILE NOT FOUND" message and cause the code to return to the basic prompt without clearing the screen. I have to write this code in assembly because I only have 89 bytes to work with ($02A7-$02FF). I could embed an ascii string in my program, but I don't have room for it and the code required to print it. Does anyone know how I could trigger either an existing kernal or basic routine that would print out the standard "FILE NOT FOUND" message? I wouldn't go through all this hassle normally, but I plan on contributing my code for others to use. If they mess up while trying to use the code, I'd like to give them a clue if they used an invalid filename. Here is the relevant part of my code: lda #$01 ; device file # ldx #$08 ; device unit # ldy #$ff ; no command jsr setlfs ; set logical file (kernal call) lda #(.strlen(PROGRAM_NAME)) ; get length of filename ldx #<(_filename) ; set lower address of filename ldy #>(_filename) ; set upper address of filename jsr setnam ; set file name (kernal call) lda #$00 ; set flag for load operation ldx #$ff ; alternative start address ldy #$ff ; alternative start address jsr load ; load program file (kernal call) bcc EXEC ; branch to execution if no load error ??? Print error message and return to basic prompt EXEC: jmp PROGRAM_ADDR ; jump to program entry point Thank you all for your time. :) Michael McIntosh +++ Codito, Ergo Sum +++ ---------------------------------------------------------------------- To unsubscribe from the list send mail to majordomo_at_musoftware.de with the string "unsubscribe cc65" in the body(!) of the mail.
This archive was generated by hypermail 2.1.3 : 2003-02-11 21:03:19 CET