;**********************************************************************; ;* A T O M I C D E B U G G E R *; ;*--------------------------------------------------------------------*; ;* doel : subroutines voor Atomic Debugger *; ;*--------------------------------------------------------------------*; ;* filenaam : routines.inc *; ;* auteur : Roland Leurs *; ;* The Atomic Development Studio *; ;* ontwikkeld : feb 1996 *; ;* laatste update : *; ;*--------------------------------------------------------------------*; ;* assembleren : als include opnemen in debug.asm *; ;**********************************************************************; screen jsr setsem ;test en zet test semafoor lda #$4F ;geef pc-commando jsr pccom tya ;schakel pagina Y voor jsr zendbyte ;geef paginanummer aan pc lda #$50 ;geef pc-commando jsr pccom tya ;schakel pagina Y voor jsr zendbyte ;geef paginanummer aan pc jmp clrsem ;reset semafoor setsem lda #11 ;test semafoor jsr osbyte bcc setsem+2 ;spring indien geen toegang rts clrsem lda #10 ;wis semafoor jmp osbyte pccom pha ;save commandonummer lda #0 ;geef commando aan pc jsr zendbyte pla ;haal commandonummer terug jmp zendbyte colour pha ;save kleurcode lda #17 ;stel kleur in jsr zendbyte pla jmp zendbyte write stx zp+2 ;save adres sty zp+3 write1 ldy #0 ;reset pointer lda (zp+2),y ;lees karakter beq *+8 ;spring indien einde string jsr zendbyte ;druk karakter af iny ;verhoog pointer bne *-8 ;gedwongen sprong rts ;einde routine gotoxy lda #31 ;cursor naar x,y jsr zendbyte txa ;x positie naar pc jsr zendbyte tya ;y positie naar pc jmp zendbyte cursor_on jsr setsem ;test semafoor lda #$09 ;geef pc commando 9 jsr pccom jmp clrsem ;clear semafoor en return cursor_off jsr setsem ;test semafoor lda #$0A ;geef pc commando 10 jsr pccom jmp clrsem ;clear semafoor en return cursor_def jsr setsem ;test semafoor lda #$51 ;geef pc commando #51 jsr pccom txa ;stuur bovenste lijn jsr zendbyte tya ;stuur onderste lijn jsr zendbyte jmp clrsem ;clear semafoor en return kb_scan jsr setsem ;test semafoor lda #$5D ;commando 5D naar pc sturen jsr pccom jsr leesbyte ;lees keyboard status pha ;bewaar dit op stack lsr a ;schuif testbit in carry bcc no_key ;spring indien geen toets gedrukt jsr leesbyte ;wel toets gedrukt: lees ascii code tax ;zet in x register jsr leesbyte ;en lees scan code tay ;zet in y register no_key jsr clrsem ;wis semafoor pla ;haal keyboard status terug rts ;return scrcopy jsr setsem ;test en zet semafoor lda #$5C ;pc-commando 5C geven jsr pccom lda #$00 ;subfunctie 0: pagina's kopieren jsr zendbyte txa ;van pagina x jsr zendbyte tya ;naar pagina y jsr zendbyte jmp clrsem ;wis semafoor en return _kader ; parameters - work xlo (16) ; work+1 ylo (17) ; work+2 xrb (18) ; work+3 yrb (19) ; work+4 mode ; work+5 kleur lda work+5 jsr colour DEC work+2 LDA work+3 PHA ldx work ldy work+3 JSR gotoxy LDX work+4 LDA KARTAB,X JSR wrch LDY work LDA KARTAB+2,X KADERLUS1 JSR wrch INY CPY work+2 BNE KADERLUS1 LDA KARTAB+4,X JSR wrch KADERLUS2 INC work+3 LDA work+3 CMP work+1 BEQ BOTTOM txa ;save x pha ldx work ldy work+3 JSR gotoxy pla tax LDA KARTAB+6,X JSR wrch LDY work LDA #$20 KADERLUS3 JSR wrch INY CPY work+2 BNE KADERLUS3 LDA KARTAB+6,X JSR wrch JMP KADERLUS2 BOTTOM txa ;save x pha ldx work ldy work+3 JSR gotoxy pla tax LDA KARTAB+8,X JSR wrch LDY work LDA KARTAB+2,X KADERLUS4 JSR wrch INY CPY work+2 BNE KADERLUS4 LDA KARTAB+10,X JSR wrch INC work PLA STA work+3 INC work+3 ldx work tay Jmp gotoxy KARTAB db 201,218,205,196,187,191 db 186,179,200,192,188,217 kader macro xlo,ylo,xrb,yrb,mode,kleur lda #xlo sta work lda #ylo sta work+1 lda #xrb sta work+2 lda #yrb sta work+3 lda #mode sta work+4 lda #kleur sta work+5 jsr _kader endm showmenu stx zp+2 ;berg positie van tekststring op sty zp+3 ldy #2 ;wis help venster showmenu1 ldx #68 jsr gotoxy ldx #11 ;druk 11 spaties af lda #' ' showmenu2 jsr wrch ;print spatie dex ;verlaag teller bne showmenu2 iny ;verhoog regelteller cpy #14 ;laatste regel gehad? bne showmenu1 ;nee, dan volgende wissen lda menutxtkleur ;stel menukleur in jsr colour jmp write1 ;druk tekststring af