VOOZH about

URL: https://qiita.com/nonNoise/items/a815dc95b8d670a6d91c

⇱ 令和からZ80を始める為のメモ #Z80 - Qiita


👁 Image
11

Go to list of users who liked

7

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

More than 3 years have passed since last update.

@nonNoise(北神 nonNoise)

令和からZ80を始める為のメモ

11
Last updated at Posted at 2022-11-23

趣味の個人メモです

Z80を動かすための方法をまとめていく

参考書籍

一番わかりやすい

アセンブラ

Windows x64 なら以下のリンクから
https://k1.spdns.de/Develop/Projects/zasm/Distributions/zasm-4.4.9-Windows64.zip

>zasm.exe
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
 zasm - 8080/z80/z180 assembler (c) 1994 - 2022 Günter Woigk.
 version 4.4.9, 2022-03-15, for Unix-Linux.
 homepage: https://k1.spdns.de/zasm/
 git repo: https://github.com/Megatokio/zasm

syntax:
 zasm [options] [-i] inputfile [[-l] listfile|dir] [[-o] outfile|dir]
 zasm [--version|--help]

 default output dir = source dir
 default list dir = output dir

examples:
 zasm speccirom.asm
 zasm -uwy emuf_rom.asm rom_v2.0.1.rom

options:
 -u --opcodes include object code in list file
 -w --labels append label listing to list file
 -y --cycles include cpu clock cycles in list file
 -b --bin write output to binary file (default)
 -x --hex write output in intel hex format
 -s --s19 write output in motorola s-record format
 -z --clean clear intermediate files, e.g. compiled c files
 -e --compare compare own output to existing output file
 -T --test run self test (requires test directory with test sources)
 -g --cgi prevent access to files outside the source dir
 --maxerrors=NN set maximum for reported errors (default=30, max=999)
 --date=DATETIME for reproducible __date__ and __time__
 --target=ram default to target 'ram' => cpu addresses in hex files
 -o0 don't write output file
 -l0 don't write list file
 --8080 target Intel 8080 (default if --asm8080)
 --z80 target Zilog Z80 (default except if --asm8080)
 --z180 target Zilog Z180 / Hitachi HD64180
 --asm8080 use 8080 assembler syntax
 --convert8080 convert 8080 assembler source to Z80
 -v[0,1,2] verbosity of messages to stderr (0=off, 1=default, 2=more)
 --ixcbr2 enable illegal instructions like 'set b,(ix+d),r'
 --ixcbxh enable illegal instructions like 'set b,xh'
 --dotnames allow label names starting with a dot '.'
 --reqcolon require colon ':' after program label definitions
 => label definitions and instructions may start in any column
 --casefold label names are case insensitive (implied if --asm8080)
 --flatops no operator precedence: evaluate strictly from left to right
 -c [path/to/]cc declare or set path to c compiler (search in $PATH)
 -t path/to/dir set path to temp dir for c compiler (default: output dir)
 -I path/to/dir set path to c system header dir (default: compiler default)
 -L path/to/dir set path to standard library dir (default: none)
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

>zasm.exe init8250.asm
assembled file: init8250.asm
 244 lines, 2 passes, 0.0025 sec.
 no errors

Z80 命令セット

  • PDF
  • WEB

目指すBASIC

  • NASCOM_BASIC_4.7
  • NASCOMについて
  • Tiny Basic

アセンブラの書き方

JP

0番地から始まりNOPを2回行った後にMAIN(0x0010)番地に飛んでHALTする

 .ORG $0000
INIT: NOP
 NOP
 JP MAIN
 .ORG $0010
MAIN:
 HALT

LD

LD A,xxx   XXXの値をAレジスタに保存
LD (xxxx),A   Aレジスタの値をXXXXに保存
LD A,(xxxx)   xxxxアドレスの値をAレジスタに保存(確認用)
JP xxxx   xxxx番地へジャンプ

.ORG $0000
INIT: NOP
 NOP
 JP MAIN
 .ORG $0010
MAIN:
 LD A,0x76
 LD (0x8000),A
 LD A,(0x8000)
 JP 0x8000

IOとLOOP

Z80のIOモードはアドレスが下位8bitのみである(上位8bitにはIOのデータが載ってた)
LOOPの方法は他にもあるっぽい。

 .ORG $0000
INIT: NOP
 NOP
 JP MAIN

 .ORG $0010
MAIN:
 LD A,0x12
 OUT (0x00),A
 NOP
 LD B,0x05

LOOP:
 NOP
 DJNZ LOOP
 
 LD A,0x34
 OUT (0x00),A
 NOP
 JP MAIN
11

Go to list of users who liked

7
0

Go to list of comments

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11

Go to list of users who liked

7