Submitted by Steve Fewell
Description:
[&B068] Set BASIC Text Pointer A to point to the subroutine DEFinition's start address
Set the BASIC Text pointer A address (&0B-&0C) to the address pointed to by (&2A-&2B) [where &2A-&2B
is the address of the variable paremeter block for the specified subroutine name - this parameter block contains the start
address of the subroutine's DEFinition].
| B068 | * | 178 042 | B2 2A | LDA (&2A) |
| B06A | 133 011 | 85 0B | STA &0B | |
| B06C | 160 001 | A0 01 | LDY#&01 | |
| B06E | * | 177 042 | B1 2A | LDA (&2A),Y |
| B070 | 133 012 | 85 0C | STA &0C | |
| B072 | 169 000 | A9 00 | LDA#&00 | |
| B074 | H | 072 | 48 | PHA |
| B075 | d | 100 010 | 64 0A | STZ &0A |
| B077 | 032 224 142 | 20 E0 8E | JSR &8EE0 Get next non-space character pointed to by Ptr A | |
| B07A | ( | 201 040 | C9 28 | CMP#&28 |
| B07C | M | 240 077 | F0 4D | BEQ 77 --> &B0CB Process Subroutine Arguments |
| B07E | 198 010 | C6 0A | DEC &0A | |
| B080 | 165 027 | A5 1B | LDA &1B | |
| B082 | H | 072 | 48 | PHA |
| B083 | 165 025 | A5 19 | LDA &19 | |
| B085 | H | 072 | 48 | PHA |
| B086 | 165 026 | A5 1A | LDA &1A | |
| B088 | H | 072 | 48 | PHA |
| B089 | 032 011 144 | 20 0B 90 | JSR &900B Execute subroutine (starting at the BASIC program statement at PTR A) | |
| B08C | h | 104 | 68 | PLA |
| B08D | 133 026 | 85 1A | STA &1A | |
| B08F | h | 104 | 68 | PLA |
| B090 | 133 025 | 85 19 | STA &19 | |
| B092 | h | 104 | 68 | PLA |
| B093 | 133 027 | 85 1B | STA &1B | |
| B095 | h | 104 | 68 | PLA |
| B096 | 240 012 | F0 0C | BEQ 12 --> &B0A4 | |
| B098 | ? | 133 063 | 85 3F | STA &3F |
| B09A | 032 006 189 | 20 06 BD | JSR &BD06 Retrieve Integer from stack to locations &37-&3A | |
| B09D | j | 032 106 188 | 20 6A BC | JSR &BC6A Set Variable to value from the BASIC Stack |
| B0A0 | ? | 198 063 | C6 3F | DEC &3F |
| B0A2 | 208 246 | D0 F6 | BNE -10 --> &B09A | |
| B0A4 | h | 104 | 68 | PLA |
| B0A5 | 133 012 | 85 0C | STA &0C | |
| B0A7 | h | 104 | 68 | PLA |
| B0A8 | 133 011 | 85 0B | STA &0B | |
| B0AA | h | 104 | 68 | PLA |
| B0AB | 133 010 | 85 0A | STA &0A | |
| B0AD | h | 104 | 68 | PLA |
| B0AE | 178 004 | B2 04 | LDA (&04) | |
| B0B0 | 170 | AA | TAX | |
| B0B1 | 154 | 9A | TXS | |
| B0B2 | 160 000 | A0 00 | LDY#&00 | |
| B0B4 | 200 | C8 | INY | |
| B0B5 | 232 | E8 | INX | |
| B0B6 | 177 004 | B1 04 | LDA (&04),Y | |
| B0B8 | 157 000 001 | 9D 00 01 | STA &0100,X | |
| B0BB | 224 255 | E0 FF | CPX#&FF | |
| B0BD | 208 245 | D0 F5 | BNE -11 --> &B0B4 | |
| B0BF | 152 | 98 | TYA | |
| B0C0 | e | 101 004 | 65 04 | ADC &04 |
| B0C2 | 133 004 | 85 04 | STA &04 | |
| B0C4 | 144 002 | 90 02 | BCC 2 --> &B0C8 | |
| B0C6 | 230 005 | E6 05 | INC &05 | |
| B0C8 | ' | 165 039 | A5 27 | LDA &27 |
| B0CA | ` | 096 | 60 | RTS |
| B0CB | 165 027 | A5 1B | LDA &1B | |
| B0CD | H | 072 | 48 | PHA |
| B0CE | 165 025 | A5 19 | LDA &19 | |
| B0D0 | H | 072 | 48 | PHA |
| B0D1 | 165 026 | A5 1A | LDA &1A | |
| B0D3 | H | 072 | 48 | PHA |
| B0D4 | 032 174 152 | 20 AE 98 | JSR &98AE Evaluate variable name & create it if it's a new variable | |
| B0D7 | R | 240 082 | F0 52 | BEQ 82 --> &B12B Tidy up and issue 'Arguments' error |
| B0D9 | 165 027 | A5 1B | LDA &1B | |
| B0DB | 133 010 | 85 0A | STA &0A | |
| B0DD | h | 104 | 68 | PLA |
| B0DE | 133 026 | 85 1A | STA &1A | |
| B0E0 | h | 104 | 68 | PLA |
| B0E1 | 133 025 | 85 19 | STA &19 | |
| B0E3 | h | 104 | 68 | PLA |
| B0E4 | 133 027 | 85 1B | STA &1B | |
| B0E6 | 250 | FA | PLX | |
| B0E7 | , | 165 044 | A5 2C | LDA &2C |
| B0E9 | H | 072 | 48 | PHA |
| B0EA | + | 165 043 | A5 2B | LDA &2B |
| B0EC | H | 072 | 48 | PHA |
| B0ED | * | 165 042 | A5 2A | LDA &2A |
| B0EF | H | 072 | 48 | PHA |
| B0F0 | 232 | E8 | INX | |
| B0F1 | 218 | DA | PHX | |
| B0F2 | 032 129 177 | 20 81 B1 | JSR &B181 Load Variable & Push its value, address and type to the BASIC Stack | |
| B0F5 | 032 229 140 | 20 E5 8C | JSR &8CE5 Compare next non-space [PTR A] character with ',' | |
| B0F8 | 240 209 | F0 D1 | BEQ -47 --> &B0CB Process Subroutine Arguments | |
| B0FA | ) | 201 041 | C9 29 | CMP#&29 |
| B0FC | - | 208 045 | D0 2D | BNE 45 --> &B12B Tidy up and issue 'Arguments' error |
| B0FE | 169 000 | A9 00 | LDA#&00 | |
| B100 | H | 072 | 48 | PHA |
| B101 | 032 213 142 | 20 D5 8E | JSR &8ED5 Get next non-space character (PTR B) | |
| B104 | ( | 201 040 | C9 28 | CMP#&28 |
| B106 | # | 208 035 | D0 23 | BNE 35 --> &B12B Tidy up and issue 'Arguments' error |
| B108 | ; | 032 059 157 | 20 3B 9D | JSR &9D3B Evaluate expression at BASIC Text pointer B |
| B10B | " | 032 034 188 | 20 22 BC | JSR &BC22 Push Variable to BASIC Stack (calls correct routine depending on flags) |
| B10E | ' | 165 039 | A5 27 | LDA &27 |
| B110 | - | 133 045 | 85 2D | STA &2D |
| B112 | & | 032 038 188 | 20 26 BC | JSR &BC26 Push IWA value to the BASIC Stack [pushi] |
| B115 | 250 | FA | PLX | |
| B116 | 232 | E8 | INX | |
| B117 | 218 | DA | PHX | |
| B118 | 032 235 142 | 20 EB 8E | JSR &8EEB Get next non-space char (PTR B) & compare with ',' | |
| B11B | 240 235 | F0 EB | BEQ -21 --> &B108 Process next actual parameter (call statement location) | |
| B11D | ) | 201 041 | C9 29 | CMP#&29 |
| B11F | 208 010 | D0 0A | BNE 10 --> &B12B Tidy up and issue 'Arguments' error | |
| B121 | h | 104 | 68 | PLA |
| B122 | h | 104 | 68 | PLA |
| B123 | L | 133 076 | 85 4C | STA &4C |
| B125 | M | 133 077 | 85 4D | STA &4D |
| B127 | L | 228 076 | E4 4C | CPX &4C |
| B129 | 240 021 | F0 15 | BEQ 21 --> &B140 | |
| B12B | 162 251 | A2 FB | LDX#&FB | |
| B12D | 154 | 9A | TXS | |
| B12E | h | 104 | 68 | PLA |
| B12F | 133 012 | 85 0C | STA &0C | |
| B131 | h | 104 | 68 | PLA |
| B132 | 133 011 | 85 0B | STA &0B | |
| B134 | ...'Arguments' error... | |||
| B140 | 032 230 188 | 20 E6 BC | JSR &BCE6 Retrieve IWA value from the BASIC Stack [popi] | |
| B143 | h | 104 | 68 | PLA |
| B144 | * | 133 042 | 85 2A | STA &2A |
| B146 | h | 104 | 68 | PLA |
| B147 | + | 133 043 | 85 2B | STA &2B |
| B149 | h | 104 | 68 | PLA |
| B14A | , | 133 044 | 85 2C | STA &2C |
| B14C | 0 | 048 031 | 30 1F | BMI 31 --> &B16D |
| B14E | - | 165 045 | A5 2D | LDA &2D |
| B150 | 240 217 | F0 D9 | BEQ -39 --> &B12B Tidy up and issue 'Arguments' error | |
| B152 | ' | 133 039 | 85 27 | STA &27 |
| B154 | 7 | 162 055 | A2 37 | LDX#&37 |
| B156 | 032 198 189 | 20 C6 BD | JSR &BDC6 Store Integer (IWA) to zero page location (specified by X) | |
| B159 | ' | 165 039 | A5 27 | LDA &27 |
| B15B | 016 008 | 10 08 | BPL 8 --> &B165 | |
| B15D | 032 232 187 | 20 E8 BB | JSR &BBE8 Pop Float from Stack and set argp (&4A-&4B) to point to the value | |
| B160 | A | 032 065 165 | 20 41 A5 | JSR &A541 Load FWA with Floating-Point variable (pointed to by argp) |
| B163 | 128 003 | 80 03 | BRA 3 --> &B168 | |
| B165 | 032 230 188 | 20 E6 BC | JSR &BCE6 Retrieve IWA value from the BASIC Stack [popi] | |
| B168 | 8 | 032 056 179 | 20 38 B3 | JSR &B338 Set numeric variable |
| B16B | 128 010 | 80 0A | BRA 10 --> &B177 | |
| B16D | - | 165 045 | A5 2D | LDA &2D |
| B16F | 208 186 | D0 BA | BNE -70 --> &B12B Tidy up and issue 'Arguments' error | |
| B171 | 032 210 188 | 20 D2 BC | JSR &BCD2 Pop String (SWA) from the stack | |
| B174 | 032 174 144 | 20 AE 90 | JSR &90AE Set String variable | |
| B177 | L | 198 076 | C6 4C | DEC &4C |
| B179 | 208 197 | D0 C5 | BNE -59 --> &B140 | |
| B17B | M | 165 077 | A5 4D | LDA &4D |
| B17D | H | 072 | 48 | PHA |
| B17E | L | 076 128 176 | 4C 80 B0 | JMP &B080 Start executing the subroutine |