User Tools

Site Tools


vc-3_system_interrupt_table

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
vc-3_system_interrupt_table [2026/01/21 01:53] appledogvc-3_system_interrupt_table [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-= VC-3 System Interrupt Table 
-The VC-3 is a system, running on the SD-8516. 
  
-== Introduction 
-I guess this interrupt system is part of the KERNAL, so should be more "VC-3" as it is system software. What follows is a simple list of the interrupt, what it does, it's calling parameters and it's return codes. I guess this should be called "Stellar BIOS V1" or "VC-3 KERNAL ROM" could be a nice name. 
- 
-== Calling Convention 
-Each INT subsystem has it's own convention. However, the INT 05h system was done first so it represents a general convention you can expect going forward. 
- 
-=== Parameters 
-* Function number: AH 
-* Small values such as char can go in AL. Otherwise, inputs can go in B.  
-* Pointers: ELM, ELD 
- 
-=== Returns 
-* Values: B, and C if needed 
-* Status: Carry flag 
-* Pointers: ELM, ELD (see calling convention) 
- 
-=== Example Code 
-<codify armasm> 
-LDAL #'A' 
-LDB #1234 
-LDAH $11        ; VAR_SET 
-INT $05 
- 
-LDELD @string 
-LDAH $62        ; IO_GETNUM   
-INT $05 
-; B has parsed number 
-</codify> 
- 
-== INT 05h - Pao Alto Tiny Basic 
-=== Memory Map 
-        ; PATB System Memory ($01ED00-$01EDFF, 256 bytes available) 
-    .equ PATB_VARIABLES     $01ED00   ; 26 vars × 2 bytes = 52 bytes ($01ED00-$01ED33) 
-    .equ PATB_EXPR_STACK    $01ED40   ; Expression stack, 64 bytes ($01ED40-$01ED7F) 
-    .equ PATB_EXPR_SP       $01ED80   ; Expression stack pointer (2 bytes) 
-    .equ PATB_GOSUB_STACK   $01ED82   ; GOSUB stack, 32 bytes (16 levels × 2 bytes) 
-    .equ PATB_GOSUB_SP      $01EDA2   ; GOSUB stack pointer (2 bytes) 
-    .equ PATB_FOR_STACK     $01EDA4   ; FOR stack, 40 bytes (8 levels × 5 bytes) 
-    .equ PATB_FOR_SP        $01EDCC   ; FOR stack pointer (2 bytes) 
-    .equ PATB_PROGRAM_PTR   $01EDCE   ; Current program line pointer (3 bytes) 
-    .equ PATB_IL_PTR        $01EDD1   ; Current IL instruction pointer (3 bytes) 
-    .equ PATB_INPUT_PTR     $01EDD4   ; Current input pointer (3 bytes) 
-    .equ PATB_RANDSEED      $01EDD7   ; Random seed (2 bytes) 
-    .equ PATB_STATUS        $01EDD9   ; Status flags (1 byte) 
-    ;                                 ; Bit 0: Running (1) / Stopped (0) 
-    ;                                 ; Bit 1: Error flag 
-    ;                                 ; Bit 2: Break flag 
- 
-=== Function Dispatch 
-    ; ============================================================================ 
-    ; INT 05h - PALO ALTO TINY BASIC SYSTEM 
-    ; Complete implementation for PATB IL interpreter 
-    ; ============================================================================ 
-    ; Function dispatch via AH register: 
-    ; 
-    ; === EXECUTION CONTROL (AH=$00-$0F) === 
-    ;   AH=$00: RUN_PROGRAM    - Start execution from line number or beginning 
-    ;   AH=$01: STOP_PROGRAM   - Stop execution 
-    ;   AH=$02: CONTINUE       - Continue from current position 
-    ;   AH=$03: EXEC_IL_STEP   - Execute one IL instruction 
-    ;   AH=$04: EXEC_IL_CONT   - Execute IL until completion 
-    ;   AH=$05: GET_STATUS     - Get interpreter status 
-    ;   AH=$06: SET_STATUS     - Set interpreter status flags 
-    ;   AH=$07: RESET_INTERP   - Reset interpreter state 
-    ; 
-    ; === VARIABLE MANAGEMENT (AH=$10-$1F) === 
-    ;   AH=$10: VAR_GET        - Get variable value by letter 
-    ;   AH=$11: VAR_SET        - Set variable value by letter 
-    ;   AH=$12: VAR_CLEAR_ALL  - Clear all variables to 0 
-    ;   AH=$13: VAR_GET_ADDR   - Get address of variable storage 
-    ; 
-    ; === EXPRESSION STACK (AH=$20-$2F) === 
-    ;   AH=$20: EXPR_PUSH      - Push value to expression stack 
-    ;   AH=$21: EXPR_POP       - Pop value from expression stack 
-    ;   AH=$22: EXPR_PEEK      - Peek at top of stack 
-    ;   AH=$23: EXPR_CLEAR     - Clear expression stack 
-    ;   AH=$24: EXPR_DEPTH     - Get current stack depth 
-    ; 
-    ; === PROGRAM LINE MANAGEMENT (AH=$30-$3F) === 
-    ;   AH=$30: LINE_FIND      - Find line by number 
-    ;   AH=$31: LINE_NEXT      - Get next line 
-    ;   AH=$32: LINE_INSERT    - Insert or replace line 
-    ;   AH=$33: LINE_DELETE    - Delete line by number 
-    ;   AH=$34: LINE_FIRST     - Get first line in program 
-    ;   AH=$35: LINE_CLEAR_ALL - Clear entire program (NEW) 
-    ;   AH=$36: LINE_COUNT     - Count total lines 
-    ; 
-    ; === GOSUB/RETURN STACK (AH=$40-$4F) === 
-    ;   AH=$40: GOSUB_PUSH     - Push return address for GOSUB 
-    ;   AH=$41: GOSUB_POP      - Pop return address for RETURN 
-    ;   AH=$42: GOSUB_CLEAR    - Clear GOSUB stack 
-    ; 
-    ; === FOR/NEXT STACK (AH=$50-$5F) === 
-    ;   AH=$50: FOR_PUSH       - Push FOR loop context 
-    ;   AH=$51: FOR_POP        - Pop FOR loop context 
-    ;   AH=$52: FOR_PEEK       - Peek at current FOR loop 
-    ;   AH=$53: FOR_CLEAR      - Clear FOR stack 
-    ;   AH=$54: FOR_FIND_VAR   - Find FOR loop by variable letter 
-    ; 
-    ; === INPUT/OUTPUT HELPERS (AH=$60-$6F) === 
-    ;   AH=$60: IO_GETCHAR     - Get next character from input buffer 
-    ;   AH=$61: IO_PUTCHAR     - Output character to screen 
-    ;   AH=$62: IO_GETNUM      - Parse number from input 
-    ;   AH=$63: IO_PUTNUM      - Output number to screen 
-    ;   AH=$64: IO_NEWLINE     - Output CR/LF 
-    ;   AH=$65: IO_GETLINE     - Get line of input from user 
-    ;   AH=$66: IO_PRINT_STR   - Print string at pointer 
-    ; 
-    ; === STRING/TOKEN HELPERS (AH=$70-$7F) === 
-    ;   AH=$70: STR_COMPARE    - Compare strings for keyword matching 
-    ;   AH=$71: STR_TO_UPPER   - Convert string to uppercase 
-    ;   AH=$72: STR_SKIP_SPACE - Skip whitespace in string 
-    ;   AH=$73: STR_IS_DIGIT   - Check if character is digit 
-    ;   AH=$74: STR_IS_ALPHA   - Check if character is letter 
-    ; 
-    ; === ARITHMETIC/LOGIC HELPERS (AH=$80-$8F) === 
-    ;   AH=$80: MATH_ADD       - Pop two values, push sum 
-    ;   AH=$81: MATH_SUB       - Pop two values, push difference 
-    ;   AH=$82: MATH_MUL       - Pop two values, push product 
-    ;   AH=$83: MATH_DIV       - Pop two values, push quotient 
-    ;   AH=$84: MATH_NEG       - Negate top of stack 
-    ;   AH=$85: MATH_RND       - Generate random number 
-    ; 
-    ; === COMPARISON HELPERS (AH=$90-$9F) === 
-    ;   AH=$90: CMP_EQ         - Compare equal (pop 2, push 1 if true, 0 if false) 
-    ;   AH=$91: CMP_NE         - Compare not equal 
-    ;   AH=$92: CMP_LT         - Compare less than 
-    ;   AH=$93: CMP_GT         - Compare greater than 
-    ;   AH=$94: CMP_LE         - Compare less than or equal 
-    ;   AH=$95: CMP_GE         - Compare greater than or equal 
-    ; 
-    ; === ERROR HANDLING (AH=$A0-$AF) === 
-    ;   AH=$A0: ERROR_SET      - Set error flag and message 
-    ;   AH=$A1: ERROR_GET      - Get current error code 
-    ;   AH=$A2: ERROR_CLEAR    - Clear error flag 
-    ;   AH=$A3: ERROR_PRINT    - Print error message 
-    ; 
-    ; === IL INTERPRETER CORE (AH=$F0-$FF) === 
-    ;   AH=$F0: IL_INIT        - Initialize IL interpreter 
-    ;   AH=$F1: IL_LOAD        - Load IL code into memory 
-    ;   AH=$F2: IL_FETCH       - Fetch next IL instruction 
-    ;   AH=$F3: IL_DISPATCH    - Dispatch IL instruction 
-    ; ============================================================================ 
- 
- 
- 
-== INT 10h - Video Services 
-    ; ============================================================================ 
-    ; INT 10h - VIDEO SERVICES 
-    ; Stellar BIOS Video interrupt handler 
-    ; ============================================================================ 
-    ; Function dispatch via AH register: 
-    ;   AH=00h: Set video mode 
-    ;   AH=01h: Set cursor shape (reserved) 
-    ;   AH=02h: Set cursor position 
-    ;   AH=03h: Get cursor position 
-    ;   AH=0Eh: Write character at cursor (teletype) 
-    ;   AH=0Fh: Get current video mode 
-    ;   AH=13h: Write string at cursor 
-    ;   AH=14h: Scroll screen up 
-    ;   AH=15h: Clear screen 
-    ;   AH=16h: Get video parameters (rows, cols) 
-    ; ============================================================================ 
- 
-=== AH=00h: Set video mode 
-* Returns: AL is 00 on success, 01 if the mode failed to init. 
- 
-Available modes: 
-* Mode 0: 22x23 console 
-* Mode 1: 40x25 console 
-* Mode 2: 80x25 console 
-* Mode 3: still thinking, graphics, or superterminal? 1280x800 "128x40"font via 10x20 charset?? 
- 
-=== AH=01h: Set cursor shape 
-=== AH=02h: Set cursor position 
-=== AH=03h: Get cursor position 
-=== AH=0Eh: Write character (teletype) 
-=== AH=13h: Write string 
- 
-== INT 11h - Keyboard Services 
-=== AH=00h: Read character (non-blocking) 
-* returns character code in AL and keyboard flags in BL. 
- 
-=== AH=01h: Read character (blocking) 
-* returns character code in AL, keyboard flags in BL, and time spent waiting in ms in C 
- 
-=== AH=02h: Get keyboard flags 
-* returns keyboard flags in AL. 
- 
-=== AH=03h: Check if key available 
-* returns the number of keys waiting in AL. I.E. 0=no keys available, 1+= has keys waiting. 
- 
-== INT 12h - String Services 
-=== AH=00h: strlen 
-=== AH=01h: strcpy 
-=== AH=02h: strcmp 
-=== AH=03h: strcat 
-=== AH=04h: atoi 
-=== AH=05h: itoa 
- 
-== INT 13h - Math Services 
-=== AH=00h: Multiply 16-bit 
-=== AH=01h: Divide 16-bit 
-=== AH=02h: Random number 
-=== AH=03h: Absolute value 
- 
-== INT 14h - Memory Services 
-=== AH=00h: memcpy 
-=== AH=01h: memset 
-=== AH=02h: memcmp 
- 
-== INT 15h - File/Storage (future) 
vc-3_system_interrupt_table.1768960387.txt.gz · Last modified: by appledog

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki