base:basicwedge
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | base:basicwedge [2015-04-17 04:30] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Sample wedge - Adding four new BASIC commands ====== | ||
+ | Code written by Scott Julian. | ||
+ | Added to Codebase by Frantic. | ||
+ | |||
+ | This source adds four new commands to the set of BASIC commands, to give you an idea how to add your own commands to the BASIC wedge. This can be useful when making your own auto-starting [[base: | ||
+ | |||
+ | < | ||
+ | ; ============================================================ | ||
+ | ; | ||
+ | ; ============================================================ | ||
+ | ; VERSION 2 | ||
+ | ; (c)2002, (c)2004 BY SCOTT JULIAN | ||
+ | ; ALPHAWORKS PTY LTD | ||
+ | |||
+ | ; THIS SAMPLE SHOW YOU HOW TO ADD FOUR NEW BASIC COMMANDS. THE | ||
+ | ; COMMANDS ARE SIMPLE AND USE SHOULD BE ABLE TO CREATE MORE | ||
+ | ; COMMANDS OF YOUR OWN USING THIS FRAMEWORK. | ||
+ | |||
+ | ; !CLS CLEAR SCREEN | ||
+ | ; !BRD CHANGE BORDER COLOUR | ||
+ | ; !SCR CHANGE SCREEN COLOUR | ||
+ | ; !TXT CHANGE TEXT COLOUR | ||
+ | ; | ||
+ | |||
+ | ; ============================================================ | ||
+ | ; STARTUP | ||
+ | ; ============================================================ | ||
+ | |||
+ | * = $C000 ; START ADDRESS 49152 | ||
+ | |||
+ | |||
+ | ; ============================================================ | ||
+ | ; KERNAL | ||
+ | ; ============================================================ | ||
+ | |||
+ | CHRGET | ||
+ | TXTPTR | ||
+ | IERROR | ||
+ | IMAIN = $0302 | ||
+ | IGONE = $0308 | ||
+ | GONE = $A7E4 | ||
+ | CHKCOM | ||
+ | FRMNUM | ||
+ | GETADR | ||
+ | CHROUT | ||
+ | BORDER | ||
+ | SCREEN | ||
+ | TEXT = $0286 | ||
+ | |||
+ | ; ============================================================ | ||
+ | ; SETUP SCREEN DISPLAY | ||
+ | ; ============================================================ | ||
+ | |||
+ | LDA #4 ; CHANGE BORDER COLOUR TO | ||
+ | STA BORDER ; BLACK | ||
+ | LDA #147 ; PRINT CHR$(147) TO CLEAR | ||
+ | JSR CHROUT ; SCREEN | ||
+ | |||
+ | LDY #$00 | ||
+ | DISPLAY | ||
+ | | ||
+ | INY | ||
+ | CPY #23 ; NUMBER OF CHARACTERS TO READ | ||
+ | BNE DISPLAY | ||
+ | |||
+ | |||
+ | ; ============================================================ | ||
+ | ; CHANGE BASIC COMMAND POINTERS | ||
+ | ; ============================================================ | ||
+ | |||
+ | INIT LDX #< | ||
+ | LDY #> | ||
+ | STX IGONE | ||
+ | STY IGONE+1 | ||
+ | RTS | ||
+ | |||
+ | LDX #$83 | ||
+ | LDY #$A4 | ||
+ | STX IMAIN ; ($0302) | ||
+ | STY IMAIN+1 | ||
+ | |||
+ | |||
+ | ; ============================================================ | ||
+ | ; CHECK FOR NEW COMMANDS, IS FIRST CHARACTER ! | ||
+ | ; ============================================================ | ||
+ | |||
+ | NEWBASIC | ||
+ | CMP #' | ||
+ | BEQ CHK ; YES, CONTINUE | ||
+ | JMP GONE+3 | ||
+ | |||
+ | |||
+ | ; ============================================================ | ||
+ | ; CHECK WHICH NEW COMMAND HAS BEEN ISSUED | ||
+ | ; ============================================================ | ||
+ | |||
+ | CHK JSR CHRGET | ||
+ | CMP #' | ||
+ | BEQ CLS ; YES, JUMP TO CLS | ||
+ | CMP #' | ||
+ | BEQ BDR ; YES, JUMP TO BRD | ||
+ | CMP #' | ||
+ | BEQ SCR ; YES, JUMP SCR | ||
+ | CMP #' | ||
+ | BEQ TEX ; YES, JUMP TEX | ||
+ | CMP #' | ||
+ | BEQ HELP ; YES, JUMP HELP | ||
+ | JMP (IERROR) ; JUMP TO ERROR CHECK | ||
+ | |||
+ | |||
+ | ; ============================================================ | ||
+ | ; NEW COMMAND TO CLEAR SCREEN | ||
+ | ; ============================================================ | ||
+ | |||
+ | CLS JSR CHRGET | ||
+ | JSR CHRGET | ||
+ | LDA #$93 ; LOAD A WITH CHR$(147) | ||
+ | JSR CHROUT | ||
+ | JMP GONE | ||
+ | |||
+ | |||
+ | ; ============================================================ | ||
+ | ; NEW COMMAND TO CHANGE SCREEN COLOUR | ||
+ | ; ============================================================ | ||
+ | |||
+ | SCR JSR CHRGET | ||
+ | JSR CHRGET | ||
+ | JSR CHRGET | ||
+ | JSR CHKCOM | ||
+ | JSR FRMNUM ; EVALUATE NUMBER | ||
+ | JSR GETADR | ||
+ | ; A HAS HI BYTE | ||
+ | ; Y HAS LO BYTE | ||
+ | STY SCREEN | ||
+ | JMP END2 | ||
+ | |||
+ | |||
+ | ; ============================================================ | ||
+ | ; NEW COMMAND TO CHANGE TEXT COLOUR | ||
+ | ; ============================================================ | ||
+ | |||
+ | TEX JSR CHRGET | ||
+ | JSR CHRGET | ||
+ | JSR CHRGET | ||
+ | JSR CHKCOM | ||
+ | JSR FRMNUM | ||
+ | JSR GETADR | ||
+ | ; A HAS HI BYTE | ||
+ | ; Y HAS LO BYTE | ||
+ | STY TEXT ; PUT IN BORDER COLOUR | ||
+ | JMP END2 | ||
+ | |||
+ | |||
+ | ; ============================================================ | ||
+ | ; NEW COMMAND TO CHANGE BORDER COLOUR | ||
+ | ; ============================================================ | ||
+ | |||
+ | BDR JSR CHRGET | ||
+ | JSR CHRGET | ||
+ | JSR CHRGET | ||
+ | JSR CHKCOM | ||
+ | JSR FRMNUM | ||
+ | JSR GETADR | ||
+ | ; A HAS HI BYTE | ||
+ | ; Y HAS LO BYTE | ||
+ | STY BORDER | ||
+ | JMP END2 | ||
+ | |||
+ | |||
+ | ; ============================================================ | ||
+ | ; HELP, DISPLAY ALL COMMANDS AND SYNTX | ||
+ | ; ============================================================ | ||
+ | |||
+ | HELP JSR CHRGET | ||
+ | JSR CHRGET | ||
+ | JSR CHRGET | ||
+ | |||
+ | LDY #$00 | ||
+ | DISHELP | ||
+ | | ||
+ | INY | ||
+ | CPY #170 ; NUMBER OF CHARARTERS TO READ | ||
+ | BNE DISHELP | ||
+ | JMP GONE | ||
+ | |||
+ | |||
+ | ; ============================================================ | ||
+ | ; RETURN TO BASIC PROMPT (READY) | ||
+ | ; ============================================================ | ||
+ | |||
+ | END2 SEC | ||
+ | LDA TXTPTR | ||
+ | SBC #$01 | ||
+ | STA TXTPTR | ||
+ | LDA TXTPTR+1 | ||
+ | SBC #$00 | ||
+ | STA TXTPTR+1 | ||
+ | JMP GONE | ||
+ | |||
+ | ; ============================================================ | ||
+ | ; TEXT DISPLAY | ||
+ | ; ============================================================ | ||
+ | |||
+ | TITLE .BYTE $0D | ||
+ | .TEXT " | ||
+ | .BYTE $0D | ||
+ | |||
+ | HELPTX .BYTE $0D | ||
+ | .TEXT " | ||
+ | .BYTE $0D | ||
+ | .TEXT " | ||
+ | .BYTE $0D | ||
+ | .TEXT " | ||
+ | .BYTE $0D | ||
+ | .TEXT " | ||
+ | .BYTE $0D | ||
+ | .TEXT " | ||
+ | </ |
base/basicwedge.txt · Last modified: 2015-04-17 04:30 by 127.0.0.1