Changes

Programming:An example to define a RSX

2,149 bytes added, 07:34, 13 March 2007
<pre>
;; This program provides the framework for the installation of a Resident System
;; Extension (an RSX).
;;
;; An RSX is a command which is accessed from basic by prexifing the command
;; with the '|' symbol.
;;
;; e.g. An RSX could provide a "MEMEDIT" command, which allows the user
;; to edit the RAM contents. It would be accessed from BASIC by typing:
;;
;; |MEMEDIT
;;
;; This program shows how an RSX is set up. You are free to use this
;; example code to create your own RSX's.
;;
;; Kevin Thacker 1993

.kl_log_ext equ &bcd1

;; this can be any address in the range &0040-&a7ff.
org &8000

;;-------------------------------------------------------------------------------
;; install RSX

ld hl,work_space ;;address of a 4 byte workspace useable by Kernel
ld bc,jump_table ;;address of command name table and routine handlers
jp kl_log_ext ;;Install RSX's

.work_space ;Space for kernel to use
defs 4

;;-------------------------------------------------------------------------------
;; RSX definition

.jump_table
defw name_table ;address pointing to RSX commands

;list of jump commands associated with each command

;The name (in the name_table) and jump instruction
;(in the jump_table), must be in the same
;order.

;i.e. the first name in the name_table refers to the
;first jump in the jump_table, and vice versa.

jp RSX_1_routine ;routine for COMMAND1 RSX
jp RSX_2_routine ;routine for COMMAND2 RSX
jp RSX_3_routine ;routine for COMMAND3 RSX

;; the table of RSX function names
;; the names must be in capitals.

.name_table
defb "COMMAND","1"+&80 ;the last letter of each RSX name must have bit 7 set to 1.
defb "COMMAND","2"+&80 ;This is used by the Kernel to identify the end of the name.
defb "COMMAND","3"+&80

defb 0 ;end of name table marker

; Code for the example RSXs

.RSX_1_routine
ret

.RSX_2_routine
ret

.RSX_3_routine
ret
</pre>
12,273
edits