Skip to content

The wAx API

Chysn edited this page Jan 31, 2022 · 14 revisions

The following subroutines will be useful in the development of user plug-ins.

Routine Addr2CP Copy Working Address to Command Pointer Call Address: $A027 Affected Registers: Accumulator Description: Copies the Working Address, which is usually the current address for a wAx process, to the Command Pointer, which indicates the next default address.

Routine: Buff2Byte Get hexadecimal byte from input Call Address: $A003 Affected Registers: Accumulator, X Description: If the next two non-space characters in the input buffer represent a valid hexadecimal byte, the value is returned in the Accumulator and the Carry flag is set. Otherwise, the carry flag is clear.

Routine: CharGet Get character from input Call Address: $A006 Affected Registers: Accumulator, X Description: Gets the next character from the input buffer. Spaces are not returned unless within quotes. Accumulator of 0 indicates end of input.

Routine: CharOut Add character to output Call Address: $A009 Affected Registers: None Description: Adds a character with PETSCII code in Accumulator to the output buffer. Note that the output buffer is not flushed to the screen until PrintBuff is called.

Routine: Hex Add hexadecimal byte to the output buffer Call Address: $A00C Affected Registers: Accumulator, X Description: Adds the value in the accumulator to the output buffer as a two-character hexadecimal number. Note that the output buffer is not flushed to the screen until PrintBuff is called.

Routine: IncAddr Increment the working address Call Address: $A00F Affected Registers: Accumulator, X Description: Sets Accumulator to the value of the working address, then increment the working address. The Accumulator will be the value of the address prior to the increment.

Routine: IncCP Increment the Command Pointer Call Address: $A012 Affected Registers: None Description: Increments the Command Pointer.

Routine: Install Start wAx Call Address: $A000 Affected Registers: Accumulator, X, Y Description: This is the jump to starting wAx with SYS 40960.

Routine: Lookup Get 6502 instruction data Call Address: $A015 Affected Registers: Accumulator, X, Y Description: Looks up a 6502 instruction with the opcode in the Accumulator. The Carry flag is set if it's a valid instruction. The instruction's addressing mode is returned in the Accumulator. The instruction's mnemonic is packed in zeropage locations $A4 and $A5, with five bits per letter in bits 0-14.

You may include "illegal" opcodes in the lookup by setting zeropage location $AF to value $2C in preparation for the call.

Routine: PrintBuff Flush output buffer to screen Call Address: $A018 Affected Registers: Accumulator, Y Description: Flushes the output buffer to the screen or output device, to a limit of 22 characters. The output buffer is terminated by $00. PrintBuff always ends with Reverse Off and Linefeed. Note that PrintBuff does not reset the buffer itself, so a new line should be started with ResetOut.

Routine: ResetIn

jLookup: jmp Lookup ; a015 jPrintBuff: jmp PrintBuff ; a018 jResetIn: jmp ResetIn ; a01b jResetOut: jmp ResetOut ; a01e jShowAddr: jmp ShowAddr ; a021 jShowCP: jmp ShowCP ; a024 jEAtoCP: jmp EAtoCP ; a027 jPrintStr: jmp PrintStr ; a02a jNextList: jmp NextList ; a02d jDirectMode:jmp DirectMode ; a030 jSizeOf: jmp SizeOf ; a033

Clone this wiki locally