5 ;WARNING! THIS MUST BE PAGE-ALIGNED!
6 ACCS: defs 256 ;STRING ACCUMULATOR
8 $ERROR "ACCS must be page-aligned!"
14 PC: defw #C000 ;PROGRAM COUNTER
15 OC: defw #C000 ;ORIGIN of CODE
16 ;LISTON: defb #ff ;LISTO & OPT FLAG
17 LISTON: defb #10 ;LISTO & OPT FLAG
20 ;Bit 0 controls the listing. If it is set, a listing is displayed.
22 ;Bit 1 controls the error reporting. If it is set, errors are reported.
25 COUNT: defb 0 ;PRINT POSITION
83 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
109 inc c ;SPEED - & PRESERVE F'
110 dec c ; WHEN CALLED BY FNEND0
111 ;!;CALL NZ,SFIX ;CONVERT TO INTEGER
122 ;GETVAR - GET LOCATION OF VARIABLE, RETURN IN HL & IX
123 ; Inputs: IY addresses first character.
124 ; Outputs: Carry set and NZ if illegal character.
125 ; Z-flag set if variable found, then:
126 ; A = variable type (0,4,5,128 or 129)
127 ; HL = IX = variable pointer.
129 ; If Z-flag & carry reset, then:
130 ; HL, IY set for subsequent PUTVAR call.
131 ; Destroys: everything
140 jr nc,error_identifier_expected
165 ; flags doesn't matter
168 msg_getvar: defx "GETVAR:<"
188 DELIM: ld a,(iy) ;ASSEMBLER DELIMITER
195 TERM: cp ';' ;ASSEMBLER TERMINATOR
204 TERM0: cp ':' ;ASSEMBLER SEPARATOR
211 ;LANGUAGE-INDEPENDENT CONTROL SECTION:
212 ; Outputs: A=delimiter, carry set if syntax error.
223 ld ix,(PC) ;PROGRAM COUNTER
227 ld ix,(OC) ;ORIGIN of CODE
247 ex de,hl ;DE= NO. OF BYTES
252 ld (PC),hl ;UPDATE PC
257 ld (OC),hl ;UPDATE OC
258 ASSEM5: pop hl ;OLD PC
272 call nc,TABIT ;NEXT LINE
308 ;PROCESSOR-SPECIFIC TRANSLATION SECTION:
310 ;REGISTER USAGE: B - TYPE OF MOST RECENT OPERAND
311 ; C - OPCODE BEING BUILT
312 ; D - (IX) OR (IY) FLAG
313 ; E - OFFSET FROM IX OR IY
314 ; HL - NUMERIC OPERAND VALUE
315 ; IX - CODE DESTINATION
316 ; IY - SOURCE TEXT POINTER
317 ; Inputs: A = initial character
318 ; Outputs: Carry set if syntax error.
335 ; this code seems to be for tokenized input
336 ; we don't have tokenizer
346 ld d,0 ;CLEAR IX/IY FLAG
348 ;GROUP 0 - TRIVIAL CASES REQUIRING NO COMPUTATION
349 ;GROUP 1 - AS GROUP 0 BUT WITH "ED" PREFIX
357 ;GROUP 2 - BIT, RES, SET
358 ;GROUP 3 - RLC, RRC, RL, RR, SLA, SRA, SRL
370 ;GROUP 4 - PUSH, POP, EX (SP)
378 ;GROUP 5 - SUB, AND, XOR, OR, CP
379 ;GROUP 6 - ADD, ADC, SBC
473 TOOFAR: jp nz,error_out_of_range
585 ;MISC - DEFB, DEFW, DEFM
634 ret z ;REJECT LD (HL),(HL)
735 ; this code seems to be for tokenized input
736 ; we don't have tokenizer
981 ;k8: for some reason i cannot remove this
1059 OPRNDS: defb 'B'+80H