0.2.0 • Published 10 years ago

js80 v0.2.0

Weekly downloads
-
License
-
Repository
-
Last release
10 years ago
     __         ______ _______
    |__| ______/  __  \\   _  \
    |  |/  ___/>      </  /_\  \
    |  |\___ \/   --   \  \_/   \
/\__|  /____  >______  /\_____  /
\______|    \/       \/       \/

js80 is a library and an assembler for z80 cpu.

Installation

npm install js80 -g

Command line

js80asm help:

  Usage: js80asm [options] <file ...>

  Options:

    -h, --help                     output usage information
    -V, --version                  output the version number
    -o, --output <file>            create binary compiled file (default a.out)
    -I, --include <dir1:dir2:...>  add directories into the search list
    -s, --sym <file>               create sym file

Examples:

js80asm test.asm

js80asm test2.asm -o test2.rom -s test2.sym

js80asm test3.asm -I include:../include2

JS80 class

Creation

var JS80 = require('js80');
var js80 = new JS80();

Class functions

  • asm js80.asm(code) ··Compile assembler code.
  • defineLabel js80.defineLabel(label, value) ·· Defines a new label.
  • secondPass js80.secondPass() ··Execute the second pass. The compiler evaluates the expressions because labels can be declared later.
  • buildImage js80.buildImage() ··Returns an array of bytes with the compiled code.
  • saveImage js80.saveImage(fileName) ··Save compiled code to a file.
  • saveSymbols js80.saveSymbols(fileName) ··Save symbols to a file (useful for debugging).

Example:

var JS80 = require('js80');
var js80 = new JS80();
js80.asm('xor a');
js80.secondPass();
js80.saveImage('a.out');

Assembler

InstDesc
label:Declares a variable
.label:Declares a local label
// comment //Comment code
`/ comment /`Comment code
; commentComment code
inst1\inst2\···\inst-nMultipe instructions per line
module Declares a module
endmoduleEnds module declaration
macro Declares a macro
endmacroEnds macro declaration
ifdef Branch if label is defined
ifndef Branch if label is not defined
if Branch if cond is not zero
elseElse branch
endifEnds branching
repeat Repeat block of code times
endrepeatEnd repeats code block
include "filename"Include another source file
incbin "filename"Include a binary file
rotate Rotate macro variable arguments
map TODO
# TODO
org TODO
defpage , , TODO
page TODO
echo e1, e2, ...TODO
error "msg"TODO
db e1, e2, ...TODO
dw e1, e2, ...TODO
dwTODO
equTODO

Expressions

ExprDesc
11001100b, 0b11001100bbinary number
0x1a, 01ah, $1ahexadecimal number
$current address
-nnegate a number
i-jsubstract two numbers
i+jsum two numbers
i*jmult two numbers
i/jdiv two numbers
i4jdivision module
(i)group expression
i<<jshift left
i>>jshift right
i^jxor
ijor
i&jand
"str"string
'i'char
# nbytesget map and move it nbytes
@0macro arguments length
@numberget macro argument (start from 1)

Examples

run: ld b,100
.1:  ld a,(hl)
     inc a
     ld (hl),a
     inc hl
     djnz .1
     ret
unuseful:
     jr run.1
      module mod1
util: xor a
      ret
      endmodule

      // no module
main: call mod1.util ; calling a module label
      ret
macro noargs
    xor a
endmacro
macro withargs i, j
    ld a,i+j
endmacro
macro withdefaults i, j:1, k:2
    ld a,i+j+k
endmacro
macro varargs i, 1..*
    repeat @0
        ld a,i+@1
        rotate 1
    endrepeat
endmacro

Assembler modules

  • bios.asm: MSX 2 Bios functions and variables (bios.WRTVRM, bios.H_KEYI, ...)
  • rom16k.asm: MSX 16kb rom setup (start label is the entry point)
  • rom32k.asm: MSX 32kb rom setup (start label is the entry point)
  • megarom.asm: MSX megarom setup (start label is the entry point)
  • extensions.asm: Misc utility macros
  • math.asm: Misc math funcs
  • debug.asm: OpenMSX debug output

Opcodes

MnemonicZ80 TimingR800 TimingOpcodes
ADC A,(HL)728E
ADC A,(IX+o)195DD 8E oo
ADC A,(IY+o)195FD 8E oo
ADC A,n72CE nn
ADC A,r4188+r
ADC A,IXp82DD 88+p
ADC A,IYq82FD 88+q
ADC HL,BC152ED 4A
ADC HL,DE152ED 5A
ADC HL,HL152ED 6A
ADC HL,SP152ED 7A
ADD A,(HL)7286
ADD A,(IX+o)195DD 86 oo
ADD A,(IY+o)195FD 86 oo
ADD A,n72C6 nn
ADD A,r4180+r
ADD A,IXp82DD 80+p
ADD A,IYq82FD 80+q
ADD HL,BC11109
ADD HL,DE11119
ADD HL,HL11129
ADD HL,SP11139
ADD IX,BC152DD 09
ADD IX,DE152DD 19
ADD IX,IX152DD 29
ADD IX,SP152DD 39
ADD IY,BC152FD 09
ADD IY,DE152FD 19
ADD IY,IY152FD 29
ADD IY,SP152FD 39
AND (HL)72A6
AND (IX+o)195DD A6 oo
AND (IY+o)195FD A6 oo
AND n72E6 nn
AND r41A0+r
AND IXp82DD A0+p
AND IYq82FD A0+q
BIT b,(HL)123CB 46+8*b
BIT b,(IX+o)205DD CB oo 46+8*b
BIT b,(IY+o)205FD CB oo 46+8*b
BIT b,r82CB 40+8*b+r
CALL C,nn17/105/3DC nn nn
CALL M,nn17/105/3FC nn nn
CALL NC,nn17/105/3D4 nn nn
CALL NZ,nn17/105/3C4 nn nn
CALL P,nn17/105/3F4 nn nn
CALL PE,nn17/105/3EC nn nn
CALL PO,nn17/105/3E4 nn nn
CALL Z,nn17/105/3CC nn nn
CALL nn175CD nn nn
CCF413F
CP (HL)72BE
CP (IX+o)195DD BE oo
CP (IY+o)195FD BE oo
CP n72FE nn
CP r41B8+r
CP IXp82DD B8+p
CP IYq82FD B8+q
CPD164ED A9
CPDR21/164ED B9
CPI164ED A1
CPIR21/164ED B1
CPL412F
DAA4127
DEC (HL)11435
DEC (IX+o)237DD 35 oo
DEC (IY+o)237FD 35 oo
DEC BC610B
DEC DE611B
DEC HL612B
DEC IX102DD 2B
DEC IY102FD 2B
DEC A413D
DEC B4105
DEC C410D
DEC D4115
DEC E411D
DEC H4125
DEC IXp82DD 05+8*p
DEC IYq82FD 05+8*q
DEC L412D
DEC SP613B
DI42F3
DJNZ o13/8210 oo
EI41FB
EX (SP),HL195E3
EX (SP),IX236DD E3
EX (SP),IY236FD E3
EX AF,AF'4108
EX DE,HL41EB
EXX41D9
HALT4276
IM 083ED 46
IM 183ED 56
IM 283ED 5E
IN A,(C)123ED 78
IN A,(n)113DB nn
IN B,(C)123ED 40
IN C,(C)123ED 48
IN D,(C)123ED 50
IN E,(C)123ED 58
IN H,(C)123ED 60
IN L,(C)123ED 68
IN F,(C)123ED 70
INC (HL)11434
INC (IX+o)237DD 34 oo
INC (IY+o)237FD 34 oo
INC BC6103
INC DE6113
INC HL6123
INC IX102DD 23
INC IY102FD 23
INC A413C
INC B4104
INC C410C
INC D4114
INC E411C
INC H4124
INC L412C
INC IXp82DD 04+8*p
INC IYq82FD 04+8*q
INC SP6133
IND164ED AA
INDR21/164/3ED BA
INI164ED A2
INIR21/164/3ED B2
JP (HL)41E9
JP (IX)82DD E9
JP (IY)82FD E9
JP C,nn103DA nn nn
JP M,nn103FA nn nn
JP NC,nn103D2 nn nn
JP NZ,nn103C2 nn nn
JP P,nn103F2 nn nn
JP PE,nn103EA nn nn
JP PO,nn103E2 nn nn
JP Z,nn103CA nn nn
JP nn103C3 nn nn
JR C,o12/73/238 oo
JR NC,o12/73/230 oo
JR NZ,o12/73/220 oo
JR Z,o12/73/228 oo
JR o12318 oo
LD (BC),A7202
LD (DE),A7212
LD (HL),n10336 nn
LD (HL),r7270+r
LD (IX+o),n195DD 36 oo nn
LD (IX+o),r195DD 70+r oo
LD (IY+o),n195FD 36 oo nn
LD (IY+o),r195FD 70+r oo
LD (nn),A13432 nn nn
LD (nn),BC206ED 43 nn nn
LD (nn),DE206ED 53 nn nn
LD (nn),HL16522 nn nn
LD (nn),IX206DD 22 nn nn
LD (nn),IY206FD 22 nn nn
LD (nn),SP206ED 73 nn nn
LD A,(BC)720A
LD A,(DE)721A
LD A,(HL)727E
LD A,(IX+o)195DD 7E oo
LD A,(IY+o)191FD 7E oo
LD A,(nn)1343A nn nn
LD A,n723E nn
LD A,r4178+r
LD A,IXp82DD 78+p
LD A,IYq82FD 78+q
LD A,I92ED 57
LD A,R92ED 5F
LD B,(HL)7246
LD B,(IX+o)195DD 46 oo
LD B,(IY+o)195FD 46 oo
LD B,n7206 nn
LD B,r4140+r
LD B,IXp82DD 40+p
LD B,IYq82FD 40+q
LD BC,(nn)206ED 4B nn nn
LD BC,nn10301 nn nn
LD C,(HL)724E
LD C,(IX+o)195DD 4E oo
LD C,(IY+o)195FD 4E oo
LD C,n720E nn
LD C,r4148+r
LD C,IXp82DD 48+p
LD C,IYq82FD 48+q
LD D,(HL)7256
LD D,(IX+o)195DD 56 oo
LD D,(IY+o)195FD 56 oo
LD D,n7216 nn
LD D,r4150+r
LD D,IXp82DD 50+p
LD D,IYq82FD 50+q
LD DE,(nn)206ED 5B nn nn
LD DE,nn10311 nn nn
LD E,(HL)725E
LD E,(IX+o)195DD 5E oo
LD E,(IY+o)195FD 5E oo
LD E,n721E nn
LD E,r4158+r
LD E,IXp82DD 58+p
LD E,IYq82FD 58+q
LD H,(HL)7266
LD H,(IX+o)195DD 66 oo
LD H,(IY+o)195FD 66 oo
LD H,n7226 nn
LD H,r4160+r
LD HL,(nn)1652A nn nn
LD HL,nn10321 nn nn
LD I,A92ED 47
LD IX,(nn)206DD 2A nn nn
LD IX,nn144DD 21 nn nn
LD IXh,n113DD 26 nn
LD IXh,p82DD 60+p
LD IXl,n113DD 2E nn
LD IXl,p82DD 68+p
LD IY,(nn)206FD 2A nn nn
LD IY,nn144FD 21 nn nn
LD IYh,n113FD 26 nn
LD IYh,q82FD 60+q
LD IYl,n113FD 2E nn
LD IYl,q82FD 68+q
LD L,(HL)726E
LD L,(IX+o)195DD 6E oo
LD L,(IY+o)195FD 6E oo
LD L,n722E nn
LD L,r4168+r
LD R,A92ED 4F
LD SP,(nn)206ED 7B nn nn
LD SP,HL61F9
LD SP,IX102DD F9
LD SP,IY102FD F9
LD SP,nn10331 nn nn
LDD164ED A8
LDDR21/164ED B8
LDI164ED A0
LDIR21/164ED B0
MULUB A,r14ED C1+8*r
MULUW HL,BC36ED C3
MULUW HL,SP36ED F3
NEG82ED 44
NOP4100
OR (HL)72B6
OR (IX+o)195DD B6 oo
OR (IY+o)195FD B6 oo
OR n72F6 nn
OR r41B0+r
OR IXp82DD B0+p
OR IYq82FD B0+q
OTDR21/164/3ED BB
OTIR21/164/3ED B3
OUT (C),A123ED 79
OUT (C),B123ED 41
OUT (C),C123ED 49
OUT (C),D123ED 51
OUT (C),E123ED 59
OUT (C),H123ED 61
OUT (C),L123ED 69
OUT (n),A113D3 nn
OUTD164ED AB
OUTI164ED A3
POP AF103F1
POP BC103C1
POP DE103D1
POP HL103E1
POP IX144DD E1
POP IY144FD E1
PUSH AF114F5
PUSH BC114C5
PUSH DE114D5
PUSH HL114E5
PUSH IX155DD E5
PUSH IY155FD E5
RES b,(HL)155CB 86+8*b
RES b,(IX+o)237DD CB oo 86+8*b
RES b,(IY+o)237FD CB oo 86+8*b
RES b,r82CB 80+8*b+r
RET C11/53/1D8
RET M11/53/1F8
RET NC11/53/1D0
RET NZ11/53/1C0
RET P11/53/1F0
RET PE11/53/1E8
RET PO11/53/1E0
RET Z11/53/1C8
RET103C9
RETI145ED 4D
RETN145ED 45
RL (HL)155CB 16
RL (IX+o)237DD CB oo 16
RL (IY+o)237FD CB oo 16
RL r82CB 10+r
RLA4117
RLC (HL)155CB 06
RLC (IX+o)237DD CB oo 06
RLC (IY+o)237FD CB oo 06
RLC r82CB 00+r
RLCA4107
RLD185ED 6F
RR (HL)155CB 1E
RR (IX+o)237DD CB oo 1E
RR (IY+o)237FD CB oo 1E
RR r82CB 18+r
RRA411F
RRC (HL)155CB 0E
RRC (IX+o)237DD CB oo 0E
RRC (IY+o)237FD CB oo 0E
RRC r82CB 08+r
RRCA410F
RRD185ED 67
RST 0114C7
RST 8H114CF
RST 10H114D7
RST 18H114DF
RST 20H114E7
RST 28H114EF
RST 30H114F7
RST 38H114FF
SBC A,(HL)729E
SBC A,(IX+o)195DD 9E oo
SBC A,(IY+o)195FD 9E oo
SBC A,n72DE nn
SBC A,r4198+r
SBC A,IXp82DD 98+p
SBC A,IYq82FD 98+q
SBC HL,BC152ED 42
SBC HL,DE152ED 52
SBC HL,HL152ED 62
SBC HL,SP152ED 72
SCF4137
SET b,(HL)155CB C6+8*b
SET b,(IX+o)237DD CB oo C6+8*b
SET b,(IY+o)237FD CB oo C6+8*b
SET b,r82CB C0+8*b+r
SLA (HL)155CB 26
SLA (IX+o)237DD CB oo 26
SLA (IY+o)237FD CB oo 26
SLA r82CB 20+r
SRA (HL)155CB 2E
SRA (IX+o)237DD CB oo 2E
SRA (IY+o)237FD CB oo 2E
SRA r82CB 28+r
SRL (HL)155CB 3E
SRL (IX+o)237DD CB oo 3E
SRL (IY+o)237FD CB oo 3E
SRL r82CB 38+r
SUB (HL)7296
SUB (IX+o)195DD 96 oo
SUB (IY+o)195FD 96 oo
SUB n72D6 nn
SUB r4190+r
SUB IXp82DD 90+p
SUB IYq82FD 90+q
XOR (HL)72AE
XOR (IX+o)195DD AE oo
XOR (IY+o)195FD AE oo
XOR n72EE nn
XOR r41A8+r
XOR IXp82DD A8+p
XOR IYq82FD A8+