Przeglądaj źródła

zasm: consolidate code

pull/10/head
Virgil Dupras 5 lat temu
rodzic
commit
1c17dcb7a2
3 zmienionych plików z 37 dodań i 42 usunięć
  1. +0
    -1
      apps/zasm/main.asm
  2. +37
    -0
      apps/zasm/parse.asm
  3. +0
    -41
      apps/zasm/tok.asm

+ 0
- 1
apps/zasm/main.asm Wyświetl plik

@@ -27,7 +27,6 @@ main:
#include "parse.asm"
#include "literal.asm"
#include "instr.asm"
#include "tok.asm"
#include "directive.asm"

; Parse line in (HL), write the resulting opcode(s) in (DE) and returns the


+ 37
- 0
apps/zasm/parse.asm Wyświetl plik

@@ -1,4 +1,9 @@
; *** Consts ***
TOK_INSTR .equ 0x01
TOK_DIRECTIVE .equ 0x02
TOK_EMPTY .equ 0xfe ; not a bad token, just an empty line
TOK_BAD .equ 0xff

.equ SCRATCHPAD_SIZE 0x20
; *** Variables ***
scratchpad:
@@ -73,3 +78,35 @@ toWord:
.success:
xor a ; ensure Z
ret

; Parse line in (HL) and read the next token in BC. The token is written on
; two bytes (B and C). B is a token type (TOK_* constants) and C is an ID
; specific to that token type.
; Advance HL to after the read word.
; If no token matches, TOK_BAD is written to B
tokenize:
call toWord
jr nz, .emptyline
call readWord
push hl ; Save advanced HL for later
ld hl, scratchpad
call getInstID
jr z, .instr
call getDirectiveID
jr z, .direc
; no match
ld b, TOK_BAD
jr .end
.instr:
ld b, TOK_INSTR
jr .end
.direc:
ld b, TOK_DIRECTIVE
.end:
ld c, a
pop hl
ret
.emptyline:
ld b, TOK_EMPTY
; no HL to pop, we jumped before the push
ret

+ 0
- 41
apps/zasm/tok.asm Wyświetl plik

@@ -1,41 +0,0 @@
; *** Requirements ***
; JUMP_UPCASE

; *** Consts ***
TOK_INSTR .equ 0x01
TOK_DIRECTIVE .equ 0x02
TOK_EMPTY .equ 0xfe ; not a bad token, just an empty line
TOK_BAD .equ 0xff

; *** Code ***
; Parse line in (HL) and read the next token in BC. The token is written on
; two bytes (B and C). B is a token type (TOK_* constants) and C is an ID
; specific to that token type.
; Advance HL to after the read word.
; If no token matches, TOK_BAD is written to B
tokenize:
call toWord
jr nz, .emptyline
call readWord
push hl ; Save advanced HL for later
ld hl, scratchpad
call getInstID
jr z, .instr
call getDirectiveID
jr z, .direc
; no match
ld b, TOK_BAD
jr .end
.instr:
ld b, TOK_INSTR
jr .end
.direc:
ld b, TOK_DIRECTIVE
.end:
ld c, a
pop hl
ret
.emptyline:
ld b, TOK_EMPTY
; no HL to pop, we jumped before the push
ret

Ładowanie…
Anuluj
Zapisz