;**********************************************************************; ;* A T O M I C D E B U G G E R *; ;*--------------------------------------------------------------------*; ;* doel : machinetaal debugger voor Atom-in-PC met *; ;* ondersteuning van 6502, 65C02 en 65802 *; ;*--------------------------------------------------------------------*; ;* filenaam : command.inc *; ;* auteur : Roland Leurs *; ;* The Atomic Development Studio *; ;* ontwikkeld : nov 1996 *; ;* laatste update : *; ;*--------------------------------------------------------------------*; ;* assembleren : als include file opnemen in debug.asm *; ;**********************************************************************; parhelp .db $0D,$0A,$0A,17,12 .db "Syntax: ",17,14 .db "*DEBUG [/M mmmm] [/D dddd] [/P pppp]",17,12,$0D,$0A .db " where mmmm = start address memory dump",$0D,$0A .db " dddd = start address disassembly",$0D,$0A .db " pppp = initial program counter",$0D,$0A,$0A,$00 command lda $100,y ;skip eerste woord in opdrachtregel iny cmp #$0D ;einde regel? beq endline ;ja, dan springen cmp #' ' ;spatie? bne command ;nee, dan volgend karakter lezen commandline jsr $F876 ;lees karakter uit command line buffer cmp #'/' ;parameter opgegeven beq leespar iny ;command line pointer verhogen cmp #$0D ;test op einde regel bne commandline endline rts leespar jsr $F875 ;lees volgende karakter cmp #'?' beq com_help ora #$20 ;maak er een kleine letter van cmp #'p' beq par_p ;spring bij parameter p cmp #'d' beq par_d ;spring bij parameter d cmp #'m' beq par_m ;spring bij parameter m cmp #'h' beq com_help ;spring bij parameter h jmp commandline ;overige parameters negeren par_p jsr readaddr ;lees adres in iwrk lda iwrk ;zet pc in registeropslag sta reg_pc lda iwrk+1 sta reg_pc+1 jmp commandline ;ga volgende parameter lezen par_d jsr readaddr ;lees adres in iwrk lda iwrk ;zet in disas werkruimte sta disas_home lda iwrk+1 sta disas_home+1 jmp commandline ;ga volgende parameter lezen par_m jsr readaddr ;lees adres in iwrk lda iwrk ;zet in memedit werkruimte sta mem_home lda iwrk+1 sta mem_home+1 jmp commandline ;ga volgende parameter lezen com_help lda #9 ;zet helptekst kleur jsr colour ldx #copyright jsr write ldx #parhelp jsr write jmp exit_debug ;einde programma readaddr lda #0 ;reset eindresultaat sta iwrk sta iwrk+1 readaddr1 jsr $F875 cmp #'0' ;test op geldig digit bcc addr_error ;spring indien ongeldig cmp #'9'+1 bcc readaddr2 sbc #$07 ;maak hexadecimale "letter" bcc addr_error cmp #$40 ;test op 'F' bcs addr_error readaddr2 asl a ;schuif vier maal links asl a asl a asl a ldx #4 ;laadt teller readaddr3 asl a ;schuif bit in carry rol iwrk ;schuif carry in eindgetal rol iwrk+1 dex ;verlaag teller bne readaddr3 ;in totaal vier keer doen beq readaddr1 ;volgende digit lezen addr_error cmp #'/' ;spatie gelezen? beq readexit cmp #$0D ;einde regel? beq readexit ldx #91 ;verkeerd adres -> error 91 lda #12 jmp osbyte readexit rts