mirror of
https://github.com/makarcz/vm6502.git
synced 2025-01-13 21:32:31 +00:00
Version 2.0
Version 2.0, full emulation of 6502 op-codes, fully tested and functional. Extended description in ReadMe file. Bin2Hex tool to convert binary images to memory definition format. Microchess, EhBasic added.
This commit is contained in:
parent
0dd5a0299f
commit
67f1a62596
BIN
6502_func_test.bin
Normal file
BIN
6502_func_test.bin
Normal file
Binary file not shown.
856
6502_func_test.dat
Normal file
856
6502_func_test.dat
Normal file
@ -0,0 +1,856 @@
|
||||
; Created with HEX2BIN (C) Marek Karcz 2016. All rights reserved.
|
||||
ADDR
|
||||
$0400
|
||||
ORG
|
||||
$0000
|
||||
ORG
|
||||
$0010
|
||||
$00 $00 $00 $c3 $82 $41 $00 $7f $00 $1f $71 $80 $0f $ff $7f $80
|
||||
$ff $0f $8f $8f $17 $02 $18 $02 $19 $02 $1a $02 $1b $02 $1f $01
|
||||
$03 $02 $04 $02 $05 $02 $06 $02 $0b $01 $4e $02 $4f $02 $50 $02
|
||||
$51 $02 $52 $02 $53 $02 $54 $02 $55 $02 $4a $02 $4b $02 $4c $02
|
||||
$4d $02 $03 $02 $04 $02 $04 $01 $05 $01 $00 $00 $00 $00 $00 $00
|
||||
ORG
|
||||
$0200
|
||||
$00 $00 $00 $00 $00 $00 $00 $00 $29 $00 $60 $49 $00 $60 $09 $00
|
||||
$60 $69 $00 $60 $e9 $00 $60 $c3 $82 $41 $00 $7f $80 $80 $00 $02
|
||||
$86 $04 $82 $00 $87 $05 $83 $01 $61 $41 $20 $00 $e1 $c1 $a0 $80
|
||||
$81 $01 $80 $02 $81 $01 $80 $00 $01 $00 $01 $02 $81 $80 $81 $80
|
||||
$7f $80 $ff $00 $01 $00 $80 $80 $02 $00 $00 $1f $71 $80 $0f $ff
|
||||
$7f $80 $ff $0f $8f $8f $00 $f1 $1f $00 $f0 $ff $ff $ff $ff $f0
|
||||
$f0 $0f $00 $ff $7f $80 $02 $80 $00 $80 $00 $00 $00 $00 $00 $00
|
||||
ORG
|
||||
$0400
|
||||
$d8 $a2 $ff $9a $a9 $00 $8d $00 $02 $a2 $05 $4c $33 $04 $a0 $05
|
||||
$d0 $08 $4c $12 $04 $88 $88 $88 $88 $88 $88 $88 $88 $88 $88 $f0
|
||||
$17 $4c $21 $04 $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $f0 $de
|
||||
$4c $30 $04 $d0 $f4 $4c $35 $04 $ad $00 $02 $c9 $00 $d0 $fe $a9
|
||||
$01 $8d $00 $02 $a0 $fe $88 $98 $aa $10 $08 $18 $69 $02 $ea $ea
|
||||
$ea $ea $ea $ea $ea $ea $ea $ea $49 $7f $8d $e6 $04 $a9 $00 $4c
|
||||
$e5 $04 $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $f0 $3e $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca $ca
|
||||
$ca $ca $ca $ca $ca $ca $ea $ea $ea $ea $ea $f0 $08 $4c $6d $05
|
||||
$ea $ea $ea $ea $ea $ea $ea $ea $ea $ea $c0 $00 $f0 $03 $4c $46
|
||||
$04 $ad $00 $02 $c9 $01 $d0 $fe $a9 $02 $8d $00 $02 $c0 $01 $d0
|
||||
$03 $4c $91 $05 $a9 $00 $c9 $00 $d0 $fe $90 $fe $30 $fe $c9 $01
|
||||
$f0 $fe $b0 $fe $10 $fe $aa $e0 $00 $d0 $fe $90 $fe $30 $fe $e0
|
||||
$01 $f0 $fe $b0 $fe $10 $fe $a8 $c0 $00 $d0 $fe $90 $fe $30 $fe
|
||||
$c0 $01 $f0 $fe $b0 $fe $10 $fe $ad $00 $02 $c9 $02 $d0 $fe $a9
|
||||
$03 $8d $00 $02 $a2 $ff $9a $a9 $55 $48 $a9 $aa $48 $cd $fe $01
|
||||
$d0 $fe $ba $8a $c9 $fd $d0 $fe $68 $c9 $aa $d0 $fe $68 $c9 $55
|
||||
$d0 $fe $cd $ff $01 $d0 $fe $ba $e0 $ff $d0 $fe $ad $00 $02 $c9
|
||||
$03 $d0 $fe $a9 $04 $8d $00 $02 $a9 $ff $48 $28 $10 $1a $50 $1b
|
||||
$90 $1c $d0 $1d $30 $03 $4c $16 $06 $70 $03 $4c $1b $06 $b0 $03
|
||||
$4c $20 $06 $f0 $0f $4c $25 $06 $4c $28 $06 $4c $2b $06 $4c $2e
|
||||
$06 $4c $31 $06 $08 $ba $e0 $fe $d0 $fe $68 $c9 $ff $d0 $fe $ba
|
||||
$e0 $ff $d0 $fe $a9 $00 $48 $28 $30 $1a $70 $1b $b0 $1c $f0 $1d
|
||||
$10 $03 $4c $52 $06 $50 $03 $4c $57 $06 $90 $03 $4c $5c $06 $d0
|
||||
$0f $4c $61 $06 $4c $64 $06 $4c $67 $06 $4c $6a $06 $4c $6d $06
|
||||
$08 $68 $c9 $30 $d0 $fe $a9 $02 $48 $28 $d0 $02 $f0 $03 $4c $7e
|
||||
$06 $b0 $02 $90 $03 $4c $85 $06 $30 $02 $10 $03 $4c $8c $06 $70
|
||||
$02 $50 $03 $4c $93 $06 $a9 $01 $48 $28 $f0 $02 $d0 $03 $4c $9e
|
||||
$06 $90 $02 $b0 $03 $4c $a5 $06 $30 $02 $10 $03 $4c $ac $06 $70
|
||||
$02 $50 $03 $4c $b3 $06 $a9 $80 $48 $28 $f0 $02 $d0 $03 $4c $be
|
||||
$06 $b0 $02 $90 $03 $4c $c5 $06 $10 $02 $30 $03 $4c $cc $06 $70
|
||||
$02 $50 $03 $4c $d3 $06 $a9 $40 $48 $28 $f0 $02 $d0 $03 $4c $de
|
||||
$06 $b0 $02 $90 $03 $4c $e5 $06 $30 $02 $10 $03 $4c $ec $06 $50
|
||||
$02 $70 $03 $4c $f3 $06 $a9 $fd $48 $28 $f0 $02 $d0 $03 $4c $fe
|
||||
$06 $90 $02 $b0 $03 $4c $05 $07 $10 $02 $30 $03 $4c $0c $07 $50
|
||||
$02 $70 $03 $4c $13 $07 $a9 $fe $48 $28 $d0 $02 $f0 $03 $4c $1e
|
||||
$07 $b0 $02 $90 $03 $4c $25 $07 $10 $02 $30 $03 $4c $2c $07 $50
|
||||
$02 $70 $03 $4c $33 $07 $a9 $7f $48 $28 $d0 $02 $f0 $03 $4c $3e
|
||||
$07 $90 $02 $b0 $03 $4c $45 $07 $30 $02 $10 $03 $4c $4c $07 $50
|
||||
$02 $70 $03 $4c $53 $07 $a9 $bf $48 $28 $d0 $02 $f0 $03 $4c $5e
|
||||
$07 $90 $02 $b0 $03 $4c $65 $07 $10 $02 $30 $03 $4c $6c $07 $70
|
||||
$02 $50 $03 $4c $73 $07 $ad $00 $02 $c9 $04 $d0 $fe $a9 $05 $8d
|
||||
$00 $02 $a2 $55 $a0 $aa $a9 $ff $48 $a9 $01 $28 $48 $08 $c9 $01
|
||||
$d0 $fe $68 $48 $c9 $ff $d0 $fe $28 $a9 $00 $48 $a9 $00 $28 $48
|
||||
$08 $c9 $00 $d0 $fe $68 $48 $c9 $30 $d0 $fe $28 $a9 $ff $48 $a9
|
||||
$ff $28 $48 $08 $c9 $ff $d0 $fe $68 $48 $c9 $ff $d0 $fe $28 $a9
|
||||
$00 $48 $a9 $01 $28 $48 $08 $c9 $01 $d0 $fe $68 $48 $c9 $30 $d0
|
||||
$fe $28 $a9 $ff $48 $a9 $00 $28 $48 $08 $c9 $00 $d0 $fe $68 $48
|
||||
$c9 $ff $d0 $fe $28 $a9 $00 $48 $a9 $ff $28 $48 $08 $c9 $ff $d0
|
||||
$fe $68 $48 $c9 $30 $d0 $fe $28 $a9 $ff $48 $a9 $00 $28 $68 $08
|
||||
$c9 $ff $d0 $fe $68 $48 $c9 $fd $d0 $fe $28 $a9 $00 $48 $a9 $ff
|
||||
$28 $68 $08 $c9 $00 $d0 $fe $68 $48 $c9 $32 $d0 $fe $28 $a9 $ff
|
||||
$48 $a9 $fe $28 $68 $08 $c9 $01 $d0 $fe $68 $48 $c9 $7d $d0 $fe
|
||||
$28 $a9 $00 $48 $a9 $00 $28 $68 $08 $c9 $ff $d0 $fe $68 $48 $c9
|
||||
$b0 $d0 $fe $28 $a9 $ff $48 $a9 $ff $28 $68 $08 $c9 $00 $d0 $fe
|
||||
$68 $48 $c9 $7f $d0 $fe $28 $a9 $00 $48 $a9 $fe $28 $68 $08 $c9
|
||||
$01 $d0 $fe $68 $48 $c9 $30 $d0 $fe $28 $e0 $55 $d0 $fe $c0 $aa
|
||||
$d0 $fe $ad $00 $02 $c9 $05 $d0 $fe $a9 $06 $8d $00 $02 $a9 $00
|
||||
$48 $a9 $3c $28 $49 $c3 $08 $c9 $ff $d0 $fe $68 $48 $c9 $b0 $d0
|
||||
$fe $28 $a9 $00 $48 $a9 $c3 $28 $49 $c3 $08 $c9 $00 $d0 $fe $68
|
||||
$48 $c9 $32 $d0 $fe $28 $ad $00 $02 $c9 $06 $d0 $fe $a9 $07 $8d
|
||||
$00 $02 $a2 $24 $a0 $42 $a9 $00 $48 $a9 $18 $28 $ea $08 $c9 $18
|
||||
$d0 $fe $68 $48 $c9 $30 $d0 $fe $28 $e0 $24 $d0 $fe $c0 $42 $d0
|
||||
$fe $a2 $db $a0 $bd $a9 $ff $48 $a9 $e7 $28 $ea $08 $c9 $e7 $d0
|
||||
$fe $68 $48 $c9 $ff $d0 $fe $28 $e0 $db $d0 $fe $c0 $bd $d0 $fe
|
||||
$ad $00 $02 $c9 $07 $d0 $fe $a9 $08 $8d $00 $02 $a9 $00 $48 $28
|
||||
$a9 $46 $a2 $41 $a0 $52 $4c $c9 $36 $ea $ea $d0 $fe $e8 $e8 $f0
|
||||
$fe $10 $fe $90 $fe $50 $fe $c9 $ec $d0 $fe $e0 $42 $d0 $fe $c0
|
||||
$4f $d0 $fe $ca $c8 $c8 $c8 $49 $aa $4c $32 $09 $ea $ea $d0 $fe
|
||||
$e8 $e8 $f0 $fe $30 $fe $90 $fe $50 $fe $c9 $46 $d0 $fe $e0 $41
|
||||
$d0 $fe $c0 $52 $d0 $fe $ad $00 $02 $c9 $08 $d0 $fe $a9 $09 $8d
|
||||
$00 $02 $a9 $00 $48 $28 $a9 $49 $a2 $4e $a0 $44 $6c $f8 $36 $ea
|
||||
$d0 $fe $88 $88 $08 $88 $88 $88 $28 $f0 $fe $10 $fe $90 $fe $50
|
||||
$fe $c9 $e3 $d0 $fe $e0 $4f $d0 $fe $c0 $3e $d0 $fe $ba $e0 $ff
|
||||
$d0 $fe $ad $00 $02 $c9 $09 $d0 $fe $a9 $0a $8d $00 $02 $a9 $00
|
||||
$48 $28 $a9 $4a $a2 $53 $a0 $52 $20 $34 $37 $08 $88 $88 $88 $28
|
||||
$f0 $fe $10 $fe $90 $fe $50 $fe $c9 $e0 $d0 $fe $e0 $54 $d0 $fe
|
||||
$c0 $4c $d0 $fe $ba $e0 $ff $d0 $fe $ad $00 $02 $c9 $0a $d0 $fe
|
||||
$a9 $0b $8d $00 $02 $a9 $00 $48 $28 $a9 $42 $a2 $52 $a0 $4b $00
|
||||
$88 $08 $88 $88 $88 $c9 $e8 $d0 $fe $e0 $53 $d0 $fe $c0 $45 $d0
|
||||
$fe $68 $c9 $30 $d0 $fe $ba $e0 $ff $d0 $fe $ad $00 $02 $c9 $0b
|
||||
$d0 $fe $a9 $0c $8d $00 $02 $a9 $ff $48 $28 $18 $08 $68 $48 $c9
|
||||
$fe $d0 $fe $28 $38 $08 $68 $48 $c9 $ff $d0 $fe $28 $58 $08 $68
|
||||
$48 $c9 $fb $d0 $fe $28 $78 $08 $68 $48 $c9 $ff $d0 $fe $28 $d8
|
||||
$08 $68 $48 $c9 $f7 $d0 $fe $28 $f8 $08 $68 $48 $c9 $ff $d0 $fe
|
||||
$28 $b8 $08 $68 $48 $c9 $bf $d0 $fe $28 $a9 $00 $48 $28 $08 $68
|
||||
$48 $c9 $30 $d0 $fe $28 $38 $08 $68 $48 $c9 $31 $d0 $fe $28 $18
|
||||
$08 $68 $48 $c9 $30 $d0 $fe $28 $78 $08 $68 $48 $c9 $34 $d0 $fe
|
||||
$28 $58 $08 $68 $48 $c9 $30 $d0 $fe $28 $f8 $08 $68 $48 $c9 $38
|
||||
$d0 $fe $28 $d8 $08 $68 $48 $c9 $30 $d0 $fe $28 $a9 $40 $48 $28
|
||||
$08 $68 $48 $c9 $70 $d0 $fe $28 $b8 $08 $68 $48 $c9 $30 $d0 $fe
|
||||
$28 $ad $00 $02 $c9 $0c $d0 $fe $a9 $0d $8d $00 $02 $a2 $fe $a9
|
||||
$ff $48 $28 $e8 $08 $e0 $ff $d0 $fe $68 $48 $c9 $fd $d0 $fe $28
|
||||
$e8 $08 $e0 $00 $d0 $fe $68 $48 $c9 $7f $d0 $fe $28 $e8 $08 $e0
|
||||
$01 $d0 $fe $68 $48 $c9 $7d $d0 $fe $28 $ca $08 $e0 $00 $d0 $fe
|
||||
$68 $48 $c9 $7f $d0 $fe $28 $ca $08 $e0 $ff $d0 $fe $68 $48 $c9
|
||||
$fd $d0 $fe $28 $ca $a9 $00 $48 $28 $e8 $08 $e0 $ff $d0 $fe $68
|
||||
$48 $c9 $b0 $d0 $fe $28 $e8 $08 $e0 $00 $d0 $fe $68 $48 $c9 $32
|
||||
$d0 $fe $28 $e8 $08 $e0 $01 $d0 $fe $68 $48 $c9 $30 $d0 $fe $28
|
||||
$ca $08 $e0 $00 $d0 $fe $68 $48 $c9 $32 $d0 $fe $28 $ca $08 $e0
|
||||
$ff $d0 $fe $68 $48 $c9 $b0 $d0 $fe $28 $a0 $fe $a9 $ff $48 $28
|
||||
$c8 $08 $c0 $ff $d0 $fe $68 $48 $c9 $fd $d0 $fe $28 $c8 $08 $c0
|
||||
$00 $d0 $fe $68 $48 $c9 $7f $d0 $fe $28 $c8 $08 $c0 $01 $d0 $fe
|
||||
$68 $48 $c9 $7d $d0 $fe $28 $88 $08 $c0 $00 $d0 $fe $68 $48 $c9
|
||||
$7f $d0 $fe $28 $88 $08 $c0 $ff $d0 $fe $68 $48 $c9 $fd $d0 $fe
|
||||
$28 $88 $a9 $00 $48 $28 $c8 $08 $c0 $ff $d0 $fe $68 $48 $c9 $b0
|
||||
$d0 $fe $28 $c8 $08 $c0 $00 $d0 $fe $68 $48 $c9 $32 $d0 $fe $28
|
||||
$c8 $08 $c0 $01 $d0 $fe $68 $48 $c9 $30 $d0 $fe $28 $88 $08 $c0
|
||||
$00 $d0 $fe $68 $48 $c9 $32 $d0 $fe $28 $88 $08 $c0 $ff $d0 $fe
|
||||
$68 $48 $c9 $b0 $d0 $fe $28 $a2 $ff $a9 $ff $48 $28 $8a $08 $c9
|
||||
$ff $d0 $fe $68 $48 $c9 $fd $d0 $fe $28 $08 $e8 $28 $8a $08 $c9
|
||||
$00 $d0 $fe $68 $48 $c9 $7f $d0 $fe $28 $08 $e8 $28 $8a $08 $c9
|
||||
$01 $d0 $fe $68 $48 $c9 $7d $d0 $fe $28 $a9 $00 $48 $28 $8a $08
|
||||
$c9 $01 $d0 $fe $68 $48 $c9 $30 $d0 $fe $28 $08 $ca $28 $8a $08
|
||||
$c9 $00 $d0 $fe $68 $48 $c9 $32 $d0 $fe $28 $08 $ca $28 $8a $08
|
||||
$c9 $ff $d0 $fe $68 $48 $c9 $b0 $d0 $fe $28 $a0 $ff $a9 $ff $48
|
||||
$28 $98 $08 $c9 $ff $d0 $fe $68 $48 $c9 $fd $d0 $fe $28 $08 $c8
|
||||
$28 $98 $08 $c9 $00 $d0 $fe $68 $48 $c9 $7f $d0 $fe $28 $08 $c8
|
||||
$28 $98 $08 $c9 $01 $d0 $fe $68 $48 $c9 $7d $d0 $fe $28 $a9 $00
|
||||
$48 $28 $98 $08 $c9 $01 $d0 $fe $68 $48 $c9 $30 $d0 $fe $28 $08
|
||||
$88 $28 $98 $08 $c9 $00 $d0 $fe $68 $48 $c9 $32 $d0 $fe $28 $08
|
||||
$88 $28 $98 $08 $c9 $ff $d0 $fe $68 $48 $c9 $b0 $d0 $fe $28 $a9
|
||||
$ff $48 $a2 $ff $8a $28 $a8 $08 $c0 $ff $d0 $fe $68 $48 $c9 $fd
|
||||
$d0 $fe $28 $08 $e8 $8a $28 $a8 $08 $c0 $00 $d0 $fe $68 $48 $c9
|
||||
$7f $d0 $fe $28 $08 $e8 $8a $28 $a8 $08 $c0 $01 $d0 $fe $68 $48
|
||||
$c9 $7d $d0 $fe $28 $a9 $00 $48 $a9 $00 $8a $28 $a8 $08 $c0 $01
|
||||
$d0 $fe $68 $48 $c9 $30 $d0 $fe $28 $08 $ca $8a $28 $a8 $08 $c0
|
||||
$00 $d0 $fe $68 $48 $c9 $32 $d0 $fe $28 $08 $ca $8a $28 $a8 $08
|
||||
$c0 $ff $d0 $fe $68 $48 $c9 $b0 $d0 $fe $28 $a9 $ff $48 $a0 $ff
|
||||
$98 $28 $aa $08 $e0 $ff $d0 $fe $68 $48 $c9 $fd $d0 $fe $28 $08
|
||||
$c8 $98 $28 $aa $08 $e0 $00 $d0 $fe $68 $48 $c9 $7f $d0 $fe $28
|
||||
$08 $c8 $98 $28 $aa $08 $e0 $01 $d0 $fe $68 $48 $c9 $7d $d0 $fe
|
||||
$28 $a9 $00 $48 $a9 $00 $98 $28 $aa $08 $e0 $01 $d0 $fe $68 $48
|
||||
$c9 $30 $d0 $fe $28 $08 $88 $98 $28 $aa $08 $e0 $00 $d0 $fe $68
|
||||
$48 $c9 $32 $d0 $fe $28 $08 $88 $98 $28 $aa $08 $e0 $ff $d0 $fe
|
||||
$68 $48 $c9 $b0 $d0 $fe $28 $ad $00 $02 $c9 $0d $d0 $fe $a9 $0e
|
||||
$8d $00 $02 $a2 $01 $a9 $ff $48 $28 $9a $08 $ad $01 $01 $c9 $ff
|
||||
$d0 $fe $a9 $00 $48 $28 $9a $08 $ad $01 $01 $c9 $30 $d0 $fe $ca
|
||||
$a9 $ff $48 $28 $9a $08 $ad $00 $01 $c9 $ff $d0 $fe $a9 $00 $48
|
||||
$28 $9a $08 $ad $00 $01 $c9 $30 $d0 $fe $ca $a9 $ff $48 $28 $9a
|
||||
$08 $ad $ff $01 $c9 $ff $d0 $fe $a9 $00 $48 $28 $9a $08 $ad $ff
|
||||
$01 $c9 $30 $a2 $01 $9a $a9 $ff $48 $28 $ba $08 $e0 $01 $d0 $fe
|
||||
$ad $01 $01 $c9 $7d $d0 $fe $a9 $ff $48 $28 $ba $08 $e0 $00 $d0
|
||||
$fe $ad $00 $01 $c9 $7f $d0 $fe $a9 $ff $48 $28 $ba $08 $e0 $ff
|
||||
$d0 $fe $ad $ff $01 $c9 $fd $d0 $fe $a2 $01 $9a $a9 $00 $48 $28
|
||||
$ba $08 $e0 $01 $d0 $fe $ad $01 $01 $c9 $30 $d0 $fe $a9 $00 $48
|
||||
$28 $ba $08 $e0 $00 $d0 $fe $ad $00 $01 $c9 $32 $d0 $fe $a9 $00
|
||||
$48 $28 $ba $08 $e0 $ff $d0 $fe $ad $ff $01 $c9 $b0 $d0 $fe $68
|
||||
$ad $00 $02 $c9 $0e $d0 $fe $a9 $0f $8d $00 $02 $a0 $03 $a9 $00
|
||||
$48 $28 $b6 $13 $08 $8a $49 $c3 $28 $99 $03 $02 $08 $49 $c3 $d9
|
||||
$17 $02 $d0 $fe $68 $49 $30 $d9 $1c $02 $d0 $fe $88 $10 $df $a0
|
||||
$03 $a9 $ff $48 $28 $b6 $13 $08 $8a $49 $c3 $28 $99 $03 $02 $08
|
||||
$49 $c3 $d9 $17 $02 $d0 $fe $68 $49 $7d $d9 $1c $02 $d0 $fe $88
|
||||
$10 $df $a0 $03 $a9 $00 $48 $28 $be $17 $02 $08 $8a $49 $c3 $aa
|
||||
$28 $96 $0c $08 $49 $c3 $d9 $13 $00 $d0 $fe $68 $49 $30 $d9 $1c
|
||||
$02 $d0 $fe $88 $10 $de $a0 $03 $a9 $ff $48 $28 $be $17 $02 $08
|
||||
$8a $49 $c3 $aa $28 $96 $0c $08 $49 $c3 $d9 $13 $00 $d0 $fe $68
|
||||
$49 $7d $d9 $1c $02 $d0 $fe $88 $10 $de $a0 $03 $a2 $00 $b9 $0c
|
||||
$00 $49 $c3 $d9 $13 $00 $d0 $fe $96 $0c $b9 $03 $02 $49 $c3 $d9
|
||||
$17 $02 $d0 $fe $8a $99 $03 $02 $88 $10 $e3 $ad $00 $02 $c9 $0f
|
||||
$d0 $fe $a9 $10 $8d $00 $02 $a0 $fd $b6 $19 $8a $99 $09 $01 $88
|
||||
$c0 $fa $b0 $f5 $a0 $fd $be $1d $01 $96 $12 $88 $c0 $fa $b0 $f6
|
||||
$a0 $03 $a2 $00 $b9 $0c $00 $d9 $13 $00 $d0 $fe $96 $0c $b9 $03
|
||||
$02 $d9 $17 $02 $d0 $fe $8a $99 $03 $02 $88 $10 $e7 $ad $00 $02
|
||||
$c9 $10 $d0 $fe $a9 $11 $8d $00 $02 $a2 $03 $a9 $00 $48 $28 $b4
|
||||
$13 $08 $98 $49 $c3 $28 $9d $03 $02 $08 $49 $c3 $dd $17 $02 $d0
|
||||
$fe $68 $49 $30 $dd $1c $02 $d0 $fe $ca $10 $df $a2 $03 $a9 $ff
|
||||
$48 $28 $b4 $13 $08 $98 $49 $c3 $28 $9d $03 $02 $08 $49 $c3 $dd
|
||||
$17 $02 $d0 $fe $68 $49 $7d $dd $1c $02 $d0 $fe $ca $10 $df $a2
|
||||
$03 $a9 $00 $48 $28 $bc $17 $02 $08 $98 $49 $c3 $a8 $28 $94 $0c
|
||||
$08 $49 $c3 $d5 $13 $d0 $fe $68 $49 $30 $dd $1c $02 $d0 $fe $ca
|
||||
$10 $df $a2 $03 $a9 $ff $48 $28 $bc $17 $02 $08 $98 $49 $c3 $a8
|
||||
$28 $94 $0c $08 $49 $c3 $d5 $13 $d0 $fe $68 $49 $7d $dd $1c $02
|
||||
$d0 $fe $ca $10 $df $a2 $03 $a0 $00 $b5 $0c $49 $c3 $d5 $13 $d0
|
||||
$fe $94 $0c $bd $03 $02 $49 $c3 $dd $17 $02 $d0 $fe $8a $9d $03
|
||||
$02 $ca $10 $e5 $ad $00 $02 $c9 $11 $d0 $fe $a9 $12 $8d $00 $02
|
||||
$a2 $fd $b4 $19 $98 $9d $09 $01 $ca $e0 $fa $b0 $f5 $a2 $fd $bc
|
||||
$1d $01 $94 $12 $ca $e0 $fa $b0 $f6 $a2 $03 $a0 $00 $b5 $0c $d5
|
||||
$13 $d0 $fe $94 $0c $bd $03 $02 $dd $17 $02 $d0 $fe $8a $9d $03
|
||||
$02 $ca $10 $e9 $ad $00 $02 $c9 $12 $d0 $fe $a9 $13 $8d $00 $02
|
||||
$a9 $00 $48 $28 $a6 $13 $08 $8a $49 $c3 $aa $28 $8e $03 $02 $08
|
||||
$49 $c3 $aa $e0 $c3 $d0 $fe $68 $49 $30 $cd $1c $02 $d0 $fe $a9
|
||||
$00 $48 $28 $a6 $14 $08 $8a $49 $c3 $aa $28 $8e $04 $02 $08 $49
|
||||
$c3 $aa $e0 $82 $d0 $fe $68 $49 $30 $cd $1d $02 $d0 $fe $a9 $00
|
||||
$48 $28 $a6 $15 $08 $8a $49 $c3 $aa $28 $8e $05 $02 $08 $49 $c3
|
||||
$aa $e0 $41 $d0 $fe $68 $49 $30 $cd $1e $02 $d0 $fe $a9 $00 $48
|
||||
$28 $a6 $16 $08 $8a $49 $c3 $aa $28 $8e $06 $02 $08 $49 $c3 $aa
|
||||
$e0 $00 $d0 $fe $68 $49 $30 $cd $1f $02 $d0 $fe $a9 $ff $48 $28
|
||||
$a6 $13 $08 $8a $49 $c3 $aa $28 $8e $03 $02 $08 $49 $c3 $aa $e0
|
||||
$c3 $d0 $fe $68 $49 $7d $cd $1c $02 $d0 $fe $a9 $ff $48 $28 $a6
|
||||
$14 $08 $8a $49 $c3 $aa $28 $8e $04 $02 $08 $49 $c3 $aa $e0 $82
|
||||
$d0 $fe $68 $49 $7d $cd $1d $02 $d0 $fe $a9 $ff $48 $28 $a6 $15
|
||||
$08 $8a $49 $c3 $aa $28 $8e $05 $02 $08 $49 $c3 $aa $e0 $41 $d0
|
||||
$fe $68 $49 $7d $cd $1e $02 $d0 $fe $a9 $ff $48 $28 $a6 $16 $08
|
||||
$8a $49 $c3 $aa $28 $8e $06 $02 $08 $49 $c3 $aa $e0 $00 $d0 $fe
|
||||
$68 $49 $7d $cd $1f $02 $d0 $fe $a9 $00 $48 $28 $ae $17 $02 $08
|
||||
$8a $49 $c3 $aa $28 $86 $0c $08 $49 $c3 $c5 $13 $d0 $fe $68 $49
|
||||
$30 $cd $1c $02 $d0 $fe $a9 $00 $48 $28 $ae $18 $02 $08 $8a $49
|
||||
$c3 $aa $28 $86 $0d $08 $49 $c3 $c5 $14 $d0 $fe $68 $49 $30 $cd
|
||||
$1d $02 $d0 $fe $a9 $00 $48 $28 $ae $19 $02 $08 $8a $49 $c3 $aa
|
||||
$28 $86 $0e $08 $49 $c3 $c5 $15 $d0 $fe $68 $49 $30 $cd $1e $02
|
||||
$d0 $fe $a9 $00 $48 $28 $ae $1a $02 $08 $8a $49 $c3 $aa $28 $86
|
||||
$0f $08 $49 $c3 $c5 $16 $d0 $fe $68 $49 $30 $cd $1f $02 $d0 $fe
|
||||
$a9 $ff $48 $28 $ae $17 $02 $08 $8a $49 $c3 $aa $28 $86 $0c $08
|
||||
$49 $c3 $aa $e4 $13 $d0 $fe $68 $49 $7d $cd $1c $02 $d0 $fe $a9
|
||||
$ff $48 $28 $ae $18 $02 $08 $8a $49 $c3 $aa $28 $86 $0d $08 $49
|
||||
$c3 $aa $e4 $14 $d0 $fe $68 $49 $7d $cd $1d $02 $d0 $fe $a9 $ff
|
||||
$48 $28 $ae $19 $02 $08 $8a $49 $c3 $aa $28 $86 $0e $08 $49 $c3
|
||||
$aa $e4 $15 $d0 $fe $68 $49 $7d $cd $1e $02 $d0 $fe $a9 $ff $48
|
||||
$28 $ae $1a $02 $08 $8a $49 $c3 $aa $28 $86 $0f $08 $49 $c3 $aa
|
||||
$e4 $16 $d0 $fe $68 $49 $7d $cd $1f $02 $d0 $fe $a9 $00 $48 $28
|
||||
$a2 $c3 $08 $ec $17 $02 $d0 $fe $68 $49 $30 $cd $1c $02 $d0 $fe
|
||||
$a9 $00 $48 $28 $a2 $82 $08 $ec $18 $02 $d0 $fe $68 $49 $30 $cd
|
||||
$1d $02 $d0 $fe $a9 $00 $48 $28 $a2 $41 $08 $ec $19 $02 $d0 $fe
|
||||
$68 $49 $30 $cd $1e $02 $d0 $fe $a9 $00 $48 $28 $a2 $00 $08 $ec
|
||||
$1a $02 $d0 $fe $68 $49 $30 $cd $1f $02 $d0 $fe $a9 $ff $48 $28
|
||||
$a2 $c3 $08 $ec $17 $02 $d0 $fe $68 $49 $7d $cd $1c $02 $d0 $fe
|
||||
$a9 $ff $48 $28 $a2 $82 $08 $ec $18 $02 $d0 $fe $68 $49 $7d $cd
|
||||
$1d $02 $d0 $fe $a9 $ff $48 $28 $a2 $41 $08 $ec $19 $02 $d0 $fe
|
||||
$68 $49 $7d $cd $1e $02 $d0 $fe $a9 $ff $48 $28 $a2 $00 $08 $ec
|
||||
$1a $02 $d0 $fe $68 $49 $7d $cd $1f $02 $d0 $fe $a2 $00 $a5 $0c
|
||||
$49 $c3 $c5 $13 $d0 $fe $86 $0c $ad $03 $02 $49 $c3 $cd $17 $02
|
||||
$d0 $fe $8e $03 $02 $a5 $0d $49 $c3 $c5 $14 $d0 $fe $86 $0d $ad
|
||||
$04 $02 $49 $c3 $cd $18 $02 $d0 $fe $8e $04 $02 $a5 $0e $49 $c3
|
||||
$c5 $15 $d0 $fe $86 $0e $ad $05 $02 $49 $c3 $cd $19 $02 $d0 $fe
|
||||
$8e $05 $02 $a5 $0f $49 $c3 $c5 $16 $d0 $fe $86 $0f $ad $06 $02
|
||||
$49 $c3 $cd $1a $02 $d0 $fe $8e $06 $02 $ad $00 $02 $c9 $13 $d0
|
||||
$fe $a9 $14 $8d $00 $02 $a9 $00 $48 $28 $a4 $13 $08 $98 $49 $c3
|
||||
$a8 $28 $8c $03 $02 $08 $49 $c3 $a8 $c0 $c3 $d0 $fe $68 $49 $30
|
||||
$cd $1c $02 $d0 $fe $a9 $00 $48 $28 $a4 $14 $08 $98 $49 $c3 $a8
|
||||
$28 $8c $04 $02 $08 $49 $c3 $a8 $c0 $82 $d0 $fe $68 $49 $30 $cd
|
||||
$1d $02 $d0 $fe $a9 $00 $48 $28 $a4 $15 $08 $98 $49 $c3 $a8 $28
|
||||
$8c $05 $02 $08 $49 $c3 $a8 $c0 $41 $d0 $fe $68 $49 $30 $cd $1e
|
||||
$02 $d0 $fe $a9 $00 $48 $28 $a4 $16 $08 $98 $49 $c3 $a8 $28 $8c
|
||||
$06 $02 $08 $49 $c3 $a8 $c0 $00 $d0 $fe $68 $49 $30 $cd $1f $02
|
||||
$d0 $fe $a9 $ff $48 $28 $a4 $13 $08 $98 $49 $c3 $a8 $28 $8c $03
|
||||
$02 $08 $49 $c3 $a8 $c0 $c3 $d0 $fe $68 $49 $7d $cd $1c $02 $d0
|
||||
$fe $a9 $ff $48 $28 $a4 $14 $08 $98 $49 $c3 $a8 $28 $8c $04 $02
|
||||
$08 $49 $c3 $a8 $c0 $82 $d0 $fe $68 $49 $7d $cd $1d $02 $d0 $fe
|
||||
$a9 $ff $48 $28 $a4 $15 $08 $98 $49 $c3 $a8 $28 $8c $05 $02 $08
|
||||
$49 $c3 $a8 $c0 $41 $d0 $fe $68 $49 $7d $cd $1e $02 $d0 $fe $a9
|
||||
$ff $48 $28 $a4 $16 $08 $98 $49 $c3 $a8 $28 $8c $06 $02 $08 $49
|
||||
$c3 $a8 $c0 $00 $d0 $fe $68 $49 $7d $cd $1f $02 $d0 $fe $a9 $00
|
||||
$48 $28 $ac $17 $02 $08 $98 $49 $c3 $a8 $28 $84 $0c $08 $49 $c3
|
||||
$a8 $c4 $13 $d0 $fe $68 $49 $30 $cd $1c $02 $d0 $fe $a9 $00 $48
|
||||
$28 $ac $18 $02 $08 $98 $49 $c3 $a8 $28 $84 $0d $08 $49 $c3 $a8
|
||||
$c4 $14 $d0 $fe $68 $49 $30 $cd $1d $02 $d0 $fe $a9 $00 $48 $28
|
||||
$ac $19 $02 $08 $98 $49 $c3 $a8 $28 $84 $0e $08 $49 $c3 $a8 $c4
|
||||
$15 $d0 $fe $68 $49 $30 $cd $1e $02 $d0 $fe $a9 $00 $48 $28 $ac
|
||||
$1a $02 $08 $98 $49 $c3 $a8 $28 $84 $0f $08 $49 $c3 $a8 $c4 $16
|
||||
$d0 $fe $68 $49 $30 $cd $1f $02 $d0 $fe $a9 $ff $48 $28 $ac $17
|
||||
$02 $08 $98 $49 $c3 $a8 $28 $84 $0c $08 $49 $c3 $a8 $c5 $13 $d0
|
||||
$fe $68 $49 $7d $cd $1c $02 $d0 $fe $a9 $ff $48 $28 $ac $18 $02
|
||||
$08 $98 $49 $c3 $a8 $28 $84 $0d $08 $49 $c3 $a8 $c5 $14 $d0 $fe
|
||||
$68 $49 $7d $cd $1d $02 $d0 $fe $a9 $ff $48 $28 $ac $19 $02 $08
|
||||
$98 $49 $c3 $a8 $28 $84 $0e $08 $49 $c3 $a8 $c5 $15 $d0 $fe $68
|
||||
$49 $7d $cd $1e $02 $d0 $fe $a9 $ff $48 $28 $ac $1a $02 $08 $98
|
||||
$49 $c3 $a8 $28 $84 $0f $08 $49 $c3 $a8 $c5 $16 $d0 $fe $68 $49
|
||||
$7d $cd $1f $02 $d0 $fe $a9 $00 $48 $28 $a0 $c3 $08 $cc $17 $02
|
||||
$d0 $fe $68 $49 $30 $cd $1c $02 $d0 $fe $a9 $00 $48 $28 $a0 $82
|
||||
$08 $cc $18 $02 $d0 $fe $68 $49 $30 $cd $1d $02 $d0 $fe $a9 $00
|
||||
$48 $28 $a0 $41 $08 $cc $19 $02 $d0 $fe $68 $49 $30 $cd $1e $02
|
||||
$d0 $fe $a9 $00 $48 $28 $a0 $00 $08 $cc $1a $02 $d0 $fe $68 $49
|
||||
$30 $cd $1f $02 $d0 $fe $a9 $ff $48 $28 $a0 $c3 $08 $cc $17 $02
|
||||
$d0 $fe $68 $49 $7d $cd $1c $02 $d0 $fe $a9 $ff $48 $28 $a0 $82
|
||||
$08 $cc $18 $02 $d0 $fe $68 $49 $7d $cd $1d $02 $d0 $fe $a9 $ff
|
||||
$48 $28 $a0 $41 $08 $cc $19 $02 $d0 $fe $68 $49 $7d $cd $1e $02
|
||||
$d0 $fe $a9 $ff $48 $28 $a0 $00 $08 $cc $1a $02 $d0 $fe $68 $49
|
||||
$7d $cd $1f $02 $d0 $fe $a0 $00 $a5 $0c $49 $c3 $c5 $13 $d0 $fe
|
||||
$84 $0c $ad $03 $02 $49 $c3 $cd $17 $02 $d0 $fe $8c $03 $02 $a5
|
||||
$0d $49 $c3 $c5 $14 $d0 $fe $84 $0d $ad $04 $02 $49 $c3 $cd $18
|
||||
$02 $d0 $fe $8c $04 $02 $a5 $0e $49 $c3 $c5 $15 $d0 $fe $84 $0e
|
||||
$ad $05 $02 $49 $c3 $cd $19 $02 $d0 $fe $8c $05 $02 $a5 $0f $49
|
||||
$c3 $c5 $16 $d0 $fe $84 $0f $ad $06 $02 $49 $c3 $cd $1a $02 $d0
|
||||
$fe $8c $06 $02 $ad $00 $02 $c9 $14 $d0 $fe $a9 $15 $8d $00 $02
|
||||
$a2 $03 $a9 $00 $48 $28 $b5 $13 $08 $49 $c3 $28 $9d $03 $02 $08
|
||||
$49 $c3 $dd $17 $02 $d0 $fe $68 $49 $30 $dd $1c $02 $d0 $fe $ca
|
||||
$10 $e0 $a2 $03 $a9 $ff $48 $28 $b5 $13 $08 $49 $c3 $28 $9d $03
|
||||
$02 $08 $49 $c3 $dd $17 $02 $d0 $fe $68 $49 $7d $dd $1c $02 $d0
|
||||
$fe $ca $10 $e0 $a2 $03 $a9 $00 $48 $28 $bd $17 $02 $08 $49 $c3
|
||||
$28 $95 $0c $08 $49 $c3 $d5 $13 $d0 $fe $68 $49 $30 $dd $1c $02
|
||||
$d0 $fe $ca $10 $e1 $a2 $03 $a9 $ff $48 $28 $bd $17 $02 $08 $49
|
||||
$c3 $28 $95 $0c $08 $49 $c3 $d5 $13 $d0 $fe $68 $49 $7d $dd $1c
|
||||
$02 $d0 $fe $ca $10 $e1 $a2 $03 $a0 $00 $b5 $0c $49 $c3 $d5 $13
|
||||
$d0 $fe $94 $0c $bd $03 $02 $49 $c3 $dd $17 $02 $d0 $fe $8a $9d
|
||||
$03 $02 $ca $10 $e5 $ad $00 $02 $c9 $15 $d0 $fe $a9 $16 $8d $00
|
||||
$02 $a0 $03 $a9 $00 $48 $28 $b1 $24 $08 $49 $c3 $28 $99 $03 $02
|
||||
$08 $49 $c3 $d9 $17 $02 $d0 $fe $68 $49 $30 $d9 $1c $02 $d0 $fe
|
||||
$88 $10 $e0 $a0 $03 $a9 $ff $48 $28 $b1 $24 $08 $49 $c3 $28 $99
|
||||
$03 $02 $08 $49 $c3 $d9 $17 $02 $d0 $fe $68 $49 $7d $d9 $1c $02
|
||||
$d0 $fe $88 $10 $e0 $a0 $03 $a2 $00 $b9 $03 $02 $49 $c3 $d9 $17
|
||||
$02 $d0 $fe $8a $99 $03 $02 $88 $10 $ef $a0 $03 $a9 $00 $48 $28
|
||||
$b9 $17 $02 $08 $49 $c3 $28 $91 $30 $08 $49 $c3 $d1 $24 $d0 $fe
|
||||
$68 $49 $30 $d9 $1c $02 $d0 $fe $88 $10 $e1 $a0 $03 $a9 $ff $48
|
||||
$28 $b9 $17 $02 $08 $49 $c3 $28 $91 $30 $08 $49 $c3 $d1 $24 $d0
|
||||
$fe $68 $49 $7d $d9 $1c $02 $d0 $fe $88 $10 $e1 $a0 $03 $a2 $00
|
||||
$b9 $03 $02 $49 $c3 $d9 $17 $02 $d0 $fe $8a $99 $03 $02 $88 $10
|
||||
$ef $a2 $06 $a0 $03 $a9 $00 $48 $28 $a1 $24 $08 $49 $c3 $28 $81
|
||||
$30 $08 $49 $c3 $d9 $17 $02 $d0 $fe $68 $49 $30 $d9 $1c $02 $d0
|
||||
$fe $ca $ca $88 $10 $df $a2 $06 $a0 $03 $a9 $ff $48 $28 $a1 $24
|
||||
$08 $49 $c3 $28 $81 $30 $08 $49 $c3 $d9 $17 $02 $d0 $fe $68 $49
|
||||
$7d $d9 $1c $02 $d0 $fe $ca $ca $88 $10 $df $a0 $03 $a2 $00 $b9
|
||||
$03 $02 $49 $c3 $d9 $17 $02 $d0 $fe $8a $99 $03 $02 $88 $10 $ef
|
||||
$ad $00 $02 $c9 $16 $d0 $fe $a9 $17 $8d $00 $02 $a2 $fd $b5 $19
|
||||
$9d $09 $01 $ca $e0 $fa $b0 $f6 $a2 $fd $bd $1d $01 $95 $12 $ca
|
||||
$e0 $fa $b0 $f6 $a2 $03 $a0 $00 $b5 $0c $d5 $13 $d0 $fe $94 $0c
|
||||
$bd $03 $02 $dd $17 $02 $d0 $fe $8a $9d $03 $02 $ca $10 $e9 $a0
|
||||
$fb $a2 $fe $a1 $2c $99 $0b $01 $ca $ca $88 $c0 $f8 $b0 $f4 $a0
|
||||
$03 $a2 $00 $b9 $03 $02 $d9 $17 $02 $d0 $fe $8a $99 $03 $02 $88
|
||||
$10 $f1 $a0 $fb $b9 $1f $01 $91 $38 $88 $c0 $f8 $b0 $f6 $a0 $03
|
||||
$a2 $00 $b9 $03 $02 $d9 $17 $02 $d0 $fe $8a $99 $03 $02 $88 $10
|
||||
$f1 $a0 $fb $a2 $fe $b1 $2e $81 $38 $ca $ca $88 $c0 $f8 $b0 $f5
|
||||
$a0 $03 $a2 $00 $b9 $03 $02 $d9 $17 $02 $d0 $fe $8a $99 $03 $02
|
||||
$88 $10 $f1 $ad $00 $02 $c9 $17 $d0 $fe $a9 $18 $8d $00 $02 $a9
|
||||
$00 $48 $28 $a5 $13 $08 $49 $c3 $28 $8d $03 $02 $08 $49 $c3 $c9
|
||||
$c3 $d0 $fe $68 $49 $30 $cd $1c $02 $d0 $fe $a9 $00 $48 $28 $a5
|
||||
$14 $08 $49 $c3 $28 $8d $04 $02 $08 $49 $c3 $c9 $82 $d0 $fe $68
|
||||
$49 $30 $cd $1d $02 $d0 $fe $a9 $00 $48 $28 $a5 $15 $08 $49 $c3
|
||||
$28 $8d $05 $02 $08 $49 $c3 $c9 $41 $d0 $fe $68 $49 $30 $cd $1e
|
||||
$02 $d0 $fe $a9 $00 $48 $28 $a5 $16 $08 $49 $c3 $28 $8d $06 $02
|
||||
$08 $49 $c3 $c9 $00 $d0 $fe $68 $49 $30 $cd $1f $02 $d0 $fe $a9
|
||||
$ff $48 $28 $a5 $13 $08 $49 $c3 $28 $8d $03 $02 $08 $49 $c3 $c9
|
||||
$c3 $d0 $fe $68 $49 $7d $cd $1c $02 $d0 $fe $a9 $ff $48 $28 $a5
|
||||
$14 $08 $49 $c3 $28 $8d $04 $02 $08 $49 $c3 $c9 $82 $d0 $fe $68
|
||||
$49 $7d $cd $1d $02 $d0 $fe $a9 $ff $48 $28 $a5 $15 $08 $49 $c3
|
||||
$28 $8d $05 $02 $08 $49 $c3 $c9 $41 $d0 $fe $68 $49 $7d $cd $1e
|
||||
$02 $d0 $fe $a9 $ff $48 $28 $a5 $16 $08 $49 $c3 $28 $8d $06 $02
|
||||
$08 $49 $c3 $c9 $00 $d0 $fe $68 $49 $7d $cd $1f $02 $d0 $fe $a9
|
||||
$00 $48 $28 $ad $17 $02 $08 $49 $c3 $28 $85 $0c $08 $49 $c3 $c5
|
||||
$13 $d0 $fe $68 $49 $30 $cd $1c $02 $d0 $fe $a9 $00 $48 $28 $ad
|
||||
$18 $02 $08 $49 $c3 $28 $85 $0d $08 $49 $c3 $c5 $14 $d0 $fe $68
|
||||
$49 $30 $cd $1d $02 $d0 $fe $a9 $00 $48 $28 $ad $19 $02 $08 $49
|
||||
$c3 $28 $85 $0e $08 $49 $c3 $c5 $15 $d0 $fe $68 $49 $30 $cd $1e
|
||||
$02 $d0 $fe $a9 $00 $48 $28 $ad $1a $02 $08 $49 $c3 $28 $85 $0f
|
||||
$08 $49 $c3 $c5 $16 $d0 $fe $68 $49 $30 $cd $1f $02 $d0 $fe $a9
|
||||
$ff $48 $28 $ad $17 $02 $08 $49 $c3 $28 $85 $0c $08 $49 $c3 $c5
|
||||
$13 $d0 $fe $68 $49 $7d $cd $1c $02 $d0 $fe $a9 $ff $48 $28 $ad
|
||||
$18 $02 $08 $49 $c3 $28 $85 $0d $08 $49 $c3 $c5 $14 $d0 $fe $68
|
||||
$49 $7d $cd $1d $02 $d0 $fe $a9 $ff $48 $28 $ad $19 $02 $08 $49
|
||||
$c3 $28 $85 $0e $08 $49 $c3 $c5 $15 $d0 $fe $68 $49 $7d $cd $1e
|
||||
$02 $d0 $fe $a9 $ff $48 $28 $ad $1a $02 $08 $49 $c3 $28 $85 $0f
|
||||
$08 $49 $c3 $c5 $16 $d0 $fe $68 $49 $7d $cd $1f $02 $d0 $fe $a9
|
||||
$00 $48 $28 $a9 $c3 $08 $cd $17 $02 $d0 $fe $68 $49 $30 $cd $1c
|
||||
$02 $d0 $fe $a9 $00 $48 $28 $a9 $82 $08 $cd $18 $02 $d0 $fe $68
|
||||
$49 $30 $cd $1d $02 $d0 $fe $a9 $00 $48 $28 $a9 $41 $08 $cd $19
|
||||
$02 $d0 $fe $68 $49 $30 $cd $1e $02 $d0 $fe $a9 $00 $48 $28 $a9
|
||||
$00 $08 $cd $1a $02 $d0 $fe $68 $49 $30 $cd $1f $02 $d0 $fe $a9
|
||||
$ff $48 $28 $a9 $c3 $08 $cd $17 $02 $d0 $fe $68 $49 $7d $cd $1c
|
||||
$02 $d0 $fe $a9 $ff $48 $28 $a9 $82 $08 $cd $18 $02 $d0 $fe $68
|
||||
$49 $7d $cd $1d $02 $d0 $fe $a9 $ff $48 $28 $a9 $41 $08 $cd $19
|
||||
$02 $d0 $fe $68 $49 $7d $cd $1e $02 $d0 $fe $a9 $ff $48 $28 $a9
|
||||
$00 $08 $cd $1a $02 $d0 $fe $68 $49 $7d $cd $1f $02 $d0 $fe $a2
|
||||
$00 $a5 $0c $49 $c3 $c5 $13 $d0 $fe $86 $0c $ad $03 $02 $49 $c3
|
||||
$cd $17 $02 $d0 $fe $8e $03 $02 $a5 $0d $49 $c3 $c5 $14 $d0 $fe
|
||||
$86 $0d $ad $04 $02 $49 $c3 $cd $18 $02 $d0 $fe $8e $04 $02 $a5
|
||||
$0e $49 $c3 $c5 $15 $d0 $fe $86 $0e $ad $05 $02 $49 $c3 $cd $19
|
||||
$02 $d0 $fe $8e $05 $02 $a5 $0f $49 $c3 $c5 $16 $d0 $fe $86 $0f
|
||||
$ad $06 $02 $49 $c3 $cd $1a $02 $d0 $fe $8e $06 $02 $ad $00 $02
|
||||
$c9 $18 $d0 $fe $a9 $19 $8d $00 $02 $a9 $00 $48 $a9 $ff $28 $24
|
||||
$16 $08 $c9 $ff $d0 $fe $68 $48 $c9 $32 $d0 $fe $28 $a9 $00 $48
|
||||
$a9 $01 $28 $24 $15 $08 $c9 $01 $d0 $fe $68 $48 $c9 $70 $d0 $fe
|
||||
$28 $a9 $00 $48 $a9 $01 $28 $24 $14 $08 $c9 $01 $d0 $fe $68 $48
|
||||
$c9 $b2 $d0 $fe $28 $a9 $00 $48 $a9 $01 $28 $24 $13 $08 $c9 $01
|
||||
$d0 $fe $68 $48 $c9 $f0 $d0 $fe $28 $a9 $ff $48 $a9 $ff $28 $24
|
||||
$16 $08 $c9 $ff $d0 $fe $68 $48 $c9 $3f $d0 $fe $28 $a9 $ff $48
|
||||
$a9 $01 $28 $24 $15 $08 $c9 $01 $d0 $fe $68 $48 $c9 $7d $d0 $fe
|
||||
$28 $a9 $ff $48 $a9 $01 $28 $24 $14 $08 $c9 $01 $d0 $fe $68 $48
|
||||
$c9 $bf $d0 $fe $28 $a9 $ff $48 $a9 $01 $28 $24 $13 $08 $c9 $01
|
||||
$d0 $fe $68 $48 $c9 $fd $d0 $fe $28 $a9 $00 $48 $a9 $ff $28 $2c
|
||||
$1a $02 $08 $c9 $ff $d0 $fe $68 $48 $c9 $32 $d0 $fe $28 $a9 $00
|
||||
$48 $a9 $01 $28 $2c $19 $02 $08 $c9 $01 $d0 $fe $68 $48 $c9 $70
|
||||
$d0 $fe $28 $a9 $00 $48 $a9 $01 $28 $2c $18 $02 $08 $c9 $01 $d0
|
||||
$fe $68 $48 $c9 $b2 $d0 $fe $28 $a9 $00 $48 $a9 $01 $28 $2c $17
|
||||
$02 $08 $c9 $01 $d0 $fe $68 $48 $c9 $f0 $d0 $fe $28 $a9 $ff $48
|
||||
$a9 $ff $28 $2c $1a $02 $08 $c9 $ff $d0 $fe $68 $48 $c9 $3f $d0
|
||||
$fe $28 $a9 $ff $48 $a9 $01 $28 $2c $19 $02 $08 $c9 $01 $d0 $fe
|
||||
$68 $48 $c9 $7d $d0 $fe $28 $a9 $ff $48 $a9 $01 $28 $2c $18 $02
|
||||
$08 $c9 $01 $d0 $fe $68 $48 $c9 $bf $d0 $fe $28 $a9 $ff $48 $a9
|
||||
$01 $28 $2c $17 $02 $08 $c9 $01 $d0 $fe $68 $48 $c9 $fd $d0 $fe
|
||||
$28 $ad $00 $02 $c9 $19 $d0 $fe $a9 $1a $8d $00 $02 $a9 $00 $48
|
||||
$a2 $80 $28 $e4 $17 $08 $68 $48 $c9 $31 $d0 $fe $28 $ca $e4 $17
|
||||
$08 $68 $48 $c9 $33 $d0 $fe $28 $ca $e4 $17 $08 $e0 $7e $d0 $fe
|
||||
$68 $48 $c9 $b0 $d0 $fe $28 $a9 $ff $48 $a2 $80 $28 $e4 $17 $08
|
||||
$68 $48 $c9 $7d $d0 $fe $28 $ca $e4 $17 $08 $68 $48 $c9 $7f $d0
|
||||
$fe $28 $ca $e4 $17 $08 $e0 $7e $d0 $fe $68 $48 $c9 $fc $d0 $fe
|
||||
$28 $a9 $00 $48 $a2 $80 $28 $ec $1b $02 $08 $68 $48 $c9 $31 $d0
|
||||
$fe $28 $ca $ec $1b $02 $08 $68 $48 $c9 $33 $d0 $fe $28 $ca $ec
|
||||
$1b $02 $08 $e0 $7e $d0 $fe $68 $48 $c9 $b0 $d0 $fe $28 $a9 $ff
|
||||
$48 $a2 $80 $28 $ec $1b $02 $08 $68 $48 $c9 $7d $d0 $fe $28 $ca
|
||||
$ec $1b $02 $08 $68 $48 $c9 $7f $d0 $fe $28 $ca $ec $1b $02 $08
|
||||
$e0 $7e $d0 $fe $68 $48 $c9 $fc $d0 $fe $28 $a9 $00 $48 $a2 $80
|
||||
$28 $e0 $7f $08 $68 $48 $c9 $31 $d0 $fe $28 $ca $e0 $7f $08 $68
|
||||
$48 $c9 $33 $d0 $fe $28 $ca $e0 $7f $08 $e0 $7e $d0 $fe $68 $48
|
||||
$c9 $b0 $d0 $fe $28 $a9 $ff $48 $a2 $80 $28 $e0 $7f $08 $68 $48
|
||||
$c9 $7d $d0 $fe $28 $ca $e0 $7f $08 $68 $48 $c9 $7f $d0 $fe $28
|
||||
$ca $e0 $7f $08 $e0 $7e $d0 $fe $68 $48 $c9 $fc $d0 $fe $28 $ad
|
||||
$00 $02 $c9 $1a $d0 $fe $a9 $1b $8d $00 $02 $a9 $00 $48 $a0 $80
|
||||
$28 $c4 $17 $08 $68 $48 $c9 $31 $d0 $fe $28 $88 $c4 $17 $08 $68
|
||||
$48 $c9 $33 $d0 $fe $28 $88 $c4 $17 $08 $c0 $7e $d0 $fe $68 $48
|
||||
$c9 $b0 $d0 $fe $28 $a9 $ff $48 $a0 $80 $28 $c4 $17 $08 $68 $48
|
||||
$c9 $7d $d0 $fe $28 $88 $c4 $17 $08 $68 $48 $c9 $7f $d0 $fe $28
|
||||
$88 $c4 $17 $08 $c0 $7e $d0 $fe $68 $48 $c9 $fc $d0 $fe $28 $a9
|
||||
$00 $48 $a0 $80 $28 $cc $1b $02 $08 $68 $48 $c9 $31 $d0 $fe $28
|
||||
$88 $cc $1b $02 $08 $68 $48 $c9 $33 $d0 $fe $28 $88 $cc $1b $02
|
||||
$08 $c0 $7e $d0 $fe $68 $48 $c9 $b0 $d0 $fe $28 $a9 $ff $48 $a0
|
||||
$80 $28 $cc $1b $02 $08 $68 $48 $c9 $7d $d0 $fe $28 $88 $cc $1b
|
||||
$02 $08 $68 $48 $c9 $7f $d0 $fe $28 $88 $cc $1b $02 $08 $c0 $7e
|
||||
$d0 $fe $68 $48 $c9 $fc $d0 $fe $28 $a9 $00 $48 $a0 $80 $28 $c0
|
||||
$7f $08 $68 $48 $c9 $31 $d0 $fe $28 $88 $c0 $7f $08 $68 $48 $c9
|
||||
$33 $d0 $fe $28 $88 $c0 $7f $08 $c0 $7e $d0 $fe $68 $48 $c9 $b0
|
||||
$d0 $fe $28 $a9 $ff $48 $a0 $80 $28 $c0 $7f $08 $68 $48 $c9 $7d
|
||||
$d0 $fe $28 $88 $c0 $7f $08 $68 $48 $c9 $7f $d0 $fe $28 $88 $c0
|
||||
$7f $08 $c0 $7e $d0 $fe $68 $48 $c9 $fc $d0 $fe $28 $ad $00 $02
|
||||
$c9 $1b $d0 $fe $a9 $1c $8d $00 $02 $a9 $00 $48 $a9 $80 $28 $c5
|
||||
$17 $08 $c9 $80 $d0 $fe $68 $48 $c9 $31 $d0 $fe $28 $a9 $00 $48
|
||||
$a9 $7f $28 $c5 $17 $08 $c9 $7f $d0 $fe $68 $48 $c9 $33 $d0 $fe
|
||||
$28 $a9 $00 $48 $a9 $7e $28 $c5 $17 $08 $c9 $7e $d0 $fe $68 $48
|
||||
$c9 $b0 $d0 $fe $28 $a9 $ff $48 $a9 $80 $28 $c5 $17 $08 $c9 $80
|
||||
$d0 $fe $68 $48 $c9 $7d $d0 $fe $28 $a9 $ff $48 $a9 $7f $28 $c5
|
||||
$17 $08 $c9 $7f $d0 $fe $68 $48 $c9 $7f $d0 $fe $28 $a9 $ff $48
|
||||
$a9 $7e $28 $c5 $17 $08 $c9 $7e $d0 $fe $68 $48 $c9 $fc $d0 $fe
|
||||
$28 $a9 $00 $48 $a9 $80 $28 $cd $1b $02 $08 $c9 $80 $d0 $fe $68
|
||||
$48 $c9 $31 $d0 $fe $28 $a9 $00 $48 $a9 $7f $28 $cd $1b $02 $08
|
||||
$c9 $7f $d0 $fe $68 $48 $c9 $33 $d0 $fe $28 $a9 $00 $48 $a9 $7e
|
||||
$28 $cd $1b $02 $08 $c9 $7e $d0 $fe $68 $48 $c9 $b0 $d0 $fe $28
|
||||
$a9 $ff $48 $a9 $80 $28 $cd $1b $02 $08 $c9 $80 $d0 $fe $68 $48
|
||||
$c9 $7d $d0 $fe $28 $a9 $ff $48 $a9 $7f $28 $cd $1b $02 $08 $c9
|
||||
$7f $d0 $fe $68 $48 $c9 $7f $d0 $fe $28 $a9 $ff $48 $a9 $7e $28
|
||||
$cd $1b $02 $08 $c9 $7e $d0 $fe $68 $48 $c9 $fc $d0 $fe $28 $a9
|
||||
$00 $48 $a9 $80 $28 $c9 $7f $08 $c9 $80 $d0 $fe $68 $48 $c9 $31
|
||||
$d0 $fe $28 $a9 $00 $48 $a9 $7f $28 $c9 $7f $08 $c9 $7f $d0 $fe
|
||||
$68 $48 $c9 $33 $d0 $fe $28 $a9 $00 $48 $a9 $7e $28 $c9 $7f $08
|
||||
$c9 $7e $d0 $fe $68 $48 $c9 $b0 $d0 $fe $28 $a9 $ff $48 $a9 $80
|
||||
$28 $c9 $7f $08 $c9 $80 $d0 $fe $68 $48 $c9 $7d $d0 $fe $28 $a9
|
||||
$ff $48 $a9 $7f $28 $c9 $7f $08 $c9 $7f $d0 $fe $68 $48 $c9 $7f
|
||||
$d0 $fe $28 $a9 $ff $48 $a9 $7e $28 $c9 $7f $08 $c9 $7e $d0 $fe
|
||||
$68 $48 $c9 $fc $d0 $fe $28 $a2 $04 $a9 $00 $48 $a9 $80 $28 $d5
|
||||
$13 $08 $c9 $80 $d0 $fe $68 $48 $c9 $31 $d0 $fe $28 $a9 $00 $48
|
||||
$a9 $7f $28 $d5 $13 $08 $c9 $7f $d0 $fe $68 $48 $c9 $33 $d0 $fe
|
||||
$28 $a9 $00 $48 $a9 $7e $28 $d5 $13 $08 $c9 $7e $d0 $fe $68 $48
|
||||
$c9 $b0 $d0 $fe $28 $a9 $ff $48 $a9 $80 $28 $d5 $13 $08 $c9 $80
|
||||
$d0 $fe $68 $48 $c9 $7d $d0 $fe $28 $a9 $ff $48 $a9 $7f $28 $d5
|
||||
$13 $08 $c9 $7f $d0 $fe $68 $48 $c9 $7f $d0 $fe $28 $a9 $ff $48
|
||||
$a9 $7e $28 $d5 $13 $08 $c9 $7e $d0 $fe $68 $48 $c9 $fc $d0 $fe
|
||||
$28 $a9 $00 $48 $a9 $80 $28 $dd $17 $02 $08 $c9 $80 $d0 $fe $68
|
||||
$48 $c9 $31 $d0 $fe $28 $a9 $00 $48 $a9 $7f $28 $dd $17 $02 $08
|
||||
$c9 $7f $d0 $fe $68 $48 $c9 $33 $d0 $fe $28 $a9 $00 $48 $a9 $7e
|
||||
$28 $dd $17 $02 $08 $c9 $7e $d0 $fe $68 $48 $c9 $b0 $d0 $fe $28
|
||||
$a9 $ff $48 $a9 $80 $28 $dd $17 $02 $08 $c9 $80 $d0 $fe $68 $48
|
||||
$c9 $7d $d0 $fe $28 $a9 $ff $48 $a9 $7f $28 $dd $17 $02 $08 $c9
|
||||
$7f $d0 $fe $68 $48 $c9 $7f $d0 $fe $28 $a9 $ff $48 $a9 $7e $28
|
||||
$dd $17 $02 $08 $c9 $7e $d0 $fe $68 $48 $c9 $fc $d0 $fe $28 $a0
|
||||
$04 $a2 $08 $a9 $00 $48 $a9 $80 $28 $d9 $17 $02 $08 $c9 $80 $d0
|
||||
$fe $68 $48 $c9 $31 $d0 $fe $28 $a9 $00 $48 $a9 $7f $28 $d9 $17
|
||||
$02 $08 $c9 $7f $d0 $fe $68 $48 $c9 $33 $d0 $fe $28 $a9 $00 $48
|
||||
$a9 $7e $28 $d9 $17 $02 $08 $c9 $7e $d0 $fe $68 $48 $c9 $b0 $d0
|
||||
$fe $28 $a9 $ff $48 $a9 $80 $28 $d9 $17 $02 $08 $c9 $80 $d0 $fe
|
||||
$68 $48 $c9 $7d $d0 $fe $28 $a9 $ff $48 $a9 $7f $28 $d9 $17 $02
|
||||
$08 $c9 $7f $d0 $fe $68 $48 $c9 $7f $d0 $fe $28 $a9 $ff $48 $a9
|
||||
$7e $28 $d9 $17 $02 $08 $c9 $7e $d0 $fe $68 $48 $c9 $fc $d0 $fe
|
||||
$28 $a9 $00 $48 $a9 $80 $28 $c1 $24 $08 $c9 $80 $d0 $fe $68 $48
|
||||
$c9 $31 $d0 $fe $28 $a9 $00 $48 $a9 $7f $28 $c1 $24 $08 $c9 $7f
|
||||
$d0 $fe $68 $48 $c9 $33 $d0 $fe $28 $a9 $00 $48 $a9 $7e $28 $c1
|
||||
$24 $08 $c9 $7e $d0 $fe $68 $48 $c9 $b0 $d0 $fe $28 $a9 $ff $48
|
||||
$a9 $80 $28 $c1 $24 $08 $c9 $80 $d0 $fe $68 $48 $c9 $7d $d0 $fe
|
||||
$28 $a9 $ff $48 $a9 $7f $28 $c1 $24 $08 $c9 $7f $d0 $fe $68 $48
|
||||
$c9 $7f $d0 $fe $28 $a9 $ff $48 $a9 $7e $28 $c1 $24 $08 $c9 $7e
|
||||
$d0 $fe $68 $48 $c9 $fc $d0 $fe $28 $a9 $00 $48 $a9 $80 $28 $d1
|
||||
$24 $08 $c9 $80 $d0 $fe $68 $48 $c9 $31 $d0 $fe $28 $a9 $00 $48
|
||||
$a9 $7f $28 $d1 $24 $08 $c9 $7f $d0 $fe $68 $48 $c9 $33 $d0 $fe
|
||||
$28 $a9 $00 $48 $a9 $7e $28 $d1 $24 $08 $c9 $7e $d0 $fe $68 $48
|
||||
$c9 $b0 $d0 $fe $28 $a9 $ff $48 $a9 $80 $28 $d1 $24 $08 $c9 $80
|
||||
$d0 $fe $68 $48 $c9 $7d $d0 $fe $28 $a9 $ff $48 $a9 $7f $28 $d1
|
||||
$24 $08 $c9 $7f $d0 $fe $68 $48 $c9 $7f $d0 $fe $28 $a9 $ff $48
|
||||
$a9 $7e $28 $d1 $24 $08 $c9 $7e $d0 $fe $68 $48 $c9 $fc $d0 $fe
|
||||
$28 $ad $00 $02 $c9 $1c $d0 $fe $a9 $1d $8d $00 $02 $a2 $03 $a9
|
||||
$00 $48 $b5 $13 $28 $0a $08 $dd $20 $02 $d0 $fe $68 $49 $30 $dd
|
||||
$30 $02 $d0 $fe $ca $10 $e8 $a2 $03 $a9 $ff $48 $b5 $13 $28 $0a
|
||||
$08 $dd $20 $02 $d0 $fe $68 $49 $7c $dd $30 $02 $d0 $fe $ca $10
|
||||
$e8 $a2 $03 $a9 $00 $48 $b5 $13 $28 $4a $08 $dd $28 $02 $d0 $fe
|
||||
$68 $49 $30 $dd $38 $02 $d0 $fe $ca $10 $e8 $a2 $03 $a9 $ff $48
|
||||
$b5 $13 $28 $4a $08 $dd $28 $02 $d0 $fe $68 $49 $7c $dd $38 $02
|
||||
$d0 $fe $ca $10 $e8 $a2 $03 $a9 $00 $48 $b5 $13 $28 $2a $08 $dd
|
||||
$20 $02 $d0 $fe $68 $49 $30 $dd $30 $02 $d0 $fe $ca $10 $e8 $a2
|
||||
$03 $a9 $fe $48 $b5 $13 $28 $2a $08 $dd $20 $02 $d0 $fe $68 $49
|
||||
$7c $dd $30 $02 $d0 $fe $ca $10 $e8 $a2 $03 $a9 $01 $48 $b5 $13
|
||||
$28 $2a $08 $dd $24 $02 $d0 $fe $68 $49 $30 $dd $34 $02 $d0 $fe
|
||||
$ca $10 $e8 $a2 $03 $a9 $ff $48 $b5 $13 $28 $2a $08 $dd $24 $02
|
||||
$d0 $fe $68 $49 $7c $dd $34 $02 $d0 $fe $ca $10 $e8 $a2 $03 $a9
|
||||
$00 $48 $b5 $13 $28 $6a $08 $dd $28 $02 $d0 $fe $68 $49 $30 $dd
|
||||
$38 $02 $d0 $fe $ca $10 $e8 $a2 $03 $a9 $fe $48 $b5 $13 $28 $6a
|
||||
$08 $dd $28 $02 $d0 $fe $68 $49 $7c $dd $38 $02 $d0 $fe $ca $10
|
||||
$e8 $a2 $03 $a9 $01 $48 $b5 $13 $28 $6a $08 $dd $2c $02 $d0 $fe
|
||||
$68 $49 $30 $dd $3c $02 $d0 $fe $ca $10 $e8 $a2 $03 $a9 $ff $48
|
||||
$b5 $13 $28 $6a $08 $dd $2c $02 $d0 $fe $68 $49 $7c $dd $3c $02
|
||||
$d0 $fe $ca $10 $e8 $ad $00 $02 $c9 $1d $d0 $fe $a9 $1e $8d $00
|
||||
$02 $a2 $03 $a9 $00 $48 $b5 $13 $85 $0c $28 $06 $0c $08 $a5 $0c
|
||||
$dd $20 $02 $d0 $fe $68 $49 $30 $dd $30 $02 $d0 $fe $ca $10 $e3
|
||||
$a2 $03 $a9 $ff $48 $b5 $13 $85 $0c $28 $06 $0c $08 $a5 $0c $dd
|
||||
$20 $02 $d0 $fe $68 $49 $7c $dd $30 $02 $d0 $fe $ca $10 $e3 $a2
|
||||
$03 $a9 $00 $48 $b5 $13 $85 $0c $28 $46 $0c $08 $a5 $0c $dd $28
|
||||
$02 $d0 $fe $68 $49 $30 $dd $38 $02 $d0 $fe $ca $10 $e3 $a2 $03
|
||||
$a9 $ff $48 $b5 $13 $85 $0c $28 $46 $0c $08 $a5 $0c $dd $28 $02
|
||||
$d0 $fe $68 $49 $7c $dd $38 $02 $d0 $fe $ca $10 $e3 $a2 $03 $a9
|
||||
$00 $48 $b5 $13 $85 $0c $28 $26 $0c $08 $a5 $0c $dd $20 $02 $d0
|
||||
$fe $68 $49 $30 $dd $30 $02 $d0 $fe $ca $10 $e3 $a2 $03 $a9 $fe
|
||||
$48 $b5 $13 $85 $0c $28 $26 $0c $08 $a5 $0c $dd $20 $02 $d0 $fe
|
||||
$68 $49 $7c $dd $30 $02 $d0 $fe $ca $10 $e3 $a2 $03 $a9 $01 $48
|
||||
$b5 $13 $85 $0c $28 $26 $0c $08 $a5 $0c $dd $24 $02 $d0 $fe $68
|
||||
$49 $30 $dd $34 $02 $d0 $fe $ca $10 $e3 $a2 $03 $a9 $ff $48 $b5
|
||||
$13 $85 $0c $28 $26 $0c $08 $a5 $0c $dd $24 $02 $d0 $fe $68 $49
|
||||
$7c $dd $34 $02 $d0 $fe $ca $10 $e3 $a2 $03 $a9 $00 $48 $b5 $13
|
||||
$85 $0c $28 $66 $0c $08 $a5 $0c $dd $28 $02 $d0 $fe $68 $49 $30
|
||||
$dd $38 $02 $d0 $fe $ca $10 $e3 $a2 $03 $a9 $fe $48 $b5 $13 $85
|
||||
$0c $28 $66 $0c $08 $a5 $0c $dd $28 $02 $d0 $fe $68 $49 $7c $dd
|
||||
$38 $02 $d0 $fe $ca $10 $e3 $a2 $03 $a9 $01 $48 $b5 $13 $85 $0c
|
||||
$28 $66 $0c $08 $a5 $0c $dd $2c $02 $d0 $fe $68 $49 $30 $dd $3c
|
||||
$02 $d0 $fe $ca $10 $e3 $a2 $03 $a9 $ff $48 $b5 $13 $85 $0c $28
|
||||
$66 $0c $08 $a5 $0c $dd $2c $02 $d0 $fe $68 $49 $7c $dd $3c $02
|
||||
$d0 $fe $ca $10 $e3 $ad $00 $02 $c9 $1e $d0 $fe $a9 $1f $8d $00
|
||||
$02 $a2 $03 $a9 $00 $48 $b5 $13 $8d $03 $02 $28 $0e $03 $02 $08
|
||||
$ad $03 $02 $dd $20 $02 $d0 $fe $68 $49 $30 $dd $30 $02 $d0 $fe
|
||||
$ca $10 $e0 $a2 $03 $a9 $ff $48 $b5 $13 $8d $03 $02 $28 $0e $03
|
||||
$02 $08 $ad $03 $02 $dd $20 $02 $d0 $fe $68 $49 $7c $dd $30 $02
|
||||
$d0 $fe $ca $10 $e0 $a2 $03 $a9 $00 $48 $b5 $13 $8d $03 $02 $28
|
||||
$4e $03 $02 $08 $ad $03 $02 $dd $28 $02 $d0 $fe $68 $49 $30 $dd
|
||||
$38 $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9 $ff $48 $b5 $13 $8d $03
|
||||
$02 $28 $4e $03 $02 $08 $ad $03 $02 $dd $28 $02 $d0 $fe $68 $49
|
||||
$7c $dd $38 $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9 $00 $48 $b5 $13
|
||||
$8d $03 $02 $28 $2e $03 $02 $08 $ad $03 $02 $dd $20 $02 $d0 $fe
|
||||
$68 $49 $30 $dd $30 $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9 $fe $48
|
||||
$b5 $13 $8d $03 $02 $28 $2e $03 $02 $08 $ad $03 $02 $dd $20 $02
|
||||
$d0 $fe $68 $49 $7c $dd $30 $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9
|
||||
$01 $48 $b5 $13 $8d $03 $02 $28 $2e $03 $02 $08 $ad $03 $02 $dd
|
||||
$24 $02 $d0 $fe $68 $49 $30 $dd $34 $02 $d0 $fe $ca $10 $e0 $a2
|
||||
$03 $a9 $ff $48 $b5 $13 $8d $03 $02 $28 $2e $03 $02 $08 $ad $03
|
||||
$02 $dd $24 $02 $d0 $fe $68 $49 $7c $dd $34 $02 $d0 $fe $ca $10
|
||||
$e0 $a2 $03 $a9 $00 $48 $b5 $13 $8d $03 $02 $28 $6e $03 $02 $08
|
||||
$ad $03 $02 $dd $28 $02 $d0 $fe $68 $49 $30 $dd $38 $02 $d0 $fe
|
||||
$ca $10 $e0 $a2 $03 $a9 $fe $48 $b5 $13 $8d $03 $02 $28 $6e $03
|
||||
$02 $08 $ad $03 $02 $dd $28 $02 $d0 $fe $68 $49 $7c $dd $38 $02
|
||||
$d0 $fe $ca $10 $e0 $a2 $03 $a9 $01 $48 $b5 $13 $8d $03 $02 $28
|
||||
$6e $03 $02 $08 $ad $03 $02 $dd $2c $02 $d0 $fe $68 $49 $30 $dd
|
||||
$3c $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9 $ff $48 $b5 $13 $8d $03
|
||||
$02 $28 $6e $03 $02 $08 $ad $03 $02 $dd $2c $02 $d0 $fe $68 $49
|
||||
$7c $dd $3c $02 $d0 $fe $ca $10 $e0 $ad $00 $02 $c9 $1f $d0 $fe
|
||||
$a9 $20 $8d $00 $02 $a2 $03 $a9 $00 $48 $b5 $13 $95 $0c $28 $16
|
||||
$0c $08 $b5 $0c $dd $20 $02 $d0 $fe $68 $49 $30 $dd $30 $02 $d0
|
||||
$fe $ca $10 $e3 $a2 $03 $a9 $ff $48 $b5 $13 $95 $0c $28 $16 $0c
|
||||
$08 $b5 $0c $dd $20 $02 $d0 $fe $68 $49 $7c $dd $30 $02 $d0 $fe
|
||||
$ca $10 $e3 $a2 $03 $a9 $00 $48 $b5 $13 $95 $0c $28 $56 $0c $08
|
||||
$b5 $0c $dd $28 $02 $d0 $fe $68 $49 $30 $dd $38 $02 $d0 $fe $ca
|
||||
$10 $e3 $a2 $03 $a9 $ff $48 $b5 $13 $95 $0c $28 $56 $0c $08 $b5
|
||||
$0c $dd $28 $02 $d0 $fe $68 $49 $7c $dd $38 $02 $d0 $fe $ca $10
|
||||
$e3 $a2 $03 $a9 $00 $48 $b5 $13 $95 $0c $28 $36 $0c $08 $b5 $0c
|
||||
$dd $20 $02 $d0 $fe $68 $49 $30 $dd $30 $02 $d0 $fe $ca $10 $e3
|
||||
$a2 $03 $a9 $fe $48 $b5 $13 $95 $0c $28 $36 $0c $08 $b5 $0c $dd
|
||||
$20 $02 $d0 $fe $68 $49 $7c $dd $30 $02 $d0 $fe $ca $10 $e3 $a2
|
||||
$03 $a9 $01 $48 $b5 $13 $95 $0c $28 $36 $0c $08 $b5 $0c $dd $24
|
||||
$02 $d0 $fe $68 $49 $30 $dd $34 $02 $d0 $fe $ca $10 $e3 $a2 $03
|
||||
$a9 $ff $48 $b5 $13 $95 $0c $28 $36 $0c $08 $b5 $0c $dd $24 $02
|
||||
$d0 $fe $68 $49 $7c $dd $34 $02 $d0 $fe $ca $10 $e3 $a2 $03 $a9
|
||||
$00 $48 $b5 $13 $95 $0c $28 $76 $0c $08 $b5 $0c $dd $28 $02 $d0
|
||||
$fe $68 $49 $30 $dd $38 $02 $d0 $fe $ca $10 $e3 $a2 $03 $a9 $fe
|
||||
$48 $b5 $13 $95 $0c $28 $76 $0c $08 $b5 $0c $dd $28 $02 $d0 $fe
|
||||
$68 $49 $7c $dd $38 $02 $d0 $fe $ca $10 $e3 $a2 $03 $a9 $01 $48
|
||||
$b5 $13 $95 $0c $28 $76 $0c $08 $b5 $0c $dd $2c $02 $d0 $fe $68
|
||||
$49 $30 $dd $3c $02 $d0 $fe $ca $10 $e3 $a2 $03 $a9 $ff $48 $b5
|
||||
$13 $95 $0c $28 $76 $0c $08 $b5 $0c $dd $2c $02 $d0 $fe $68 $49
|
||||
$7c $dd $3c $02 $d0 $fe $ca $10 $e3 $ad $00 $02 $c9 $20 $d0 $fe
|
||||
$a9 $21 $8d $00 $02 $a2 $03 $a9 $00 $48 $b5 $13 $9d $03 $02 $28
|
||||
$1e $03 $02 $08 $bd $03 $02 $dd $20 $02 $d0 $fe $68 $49 $30 $dd
|
||||
$30 $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9 $ff $48 $b5 $13 $9d $03
|
||||
$02 $28 $1e $03 $02 $08 $bd $03 $02 $dd $20 $02 $d0 $fe $68 $49
|
||||
$7c $dd $30 $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9 $00 $48 $b5 $13
|
||||
$9d $03 $02 $28 $5e $03 $02 $08 $bd $03 $02 $dd $28 $02 $d0 $fe
|
||||
$68 $49 $30 $dd $38 $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9 $ff $48
|
||||
$b5 $13 $9d $03 $02 $28 $5e $03 $02 $08 $bd $03 $02 $dd $28 $02
|
||||
$d0 $fe $68 $49 $7c $dd $38 $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9
|
||||
$00 $48 $b5 $13 $9d $03 $02 $28 $3e $03 $02 $08 $bd $03 $02 $dd
|
||||
$20 $02 $d0 $fe $68 $49 $30 $dd $30 $02 $d0 $fe $ca $10 $e0 $a2
|
||||
$03 $a9 $fe $48 $b5 $13 $9d $03 $02 $28 $3e $03 $02 $08 $bd $03
|
||||
$02 $dd $20 $02 $d0 $fe $68 $49 $7c $dd $30 $02 $d0 $fe $ca $10
|
||||
$e0 $a2 $03 $a9 $01 $48 $b5 $13 $9d $03 $02 $28 $3e $03 $02 $08
|
||||
$bd $03 $02 $dd $24 $02 $d0 $fe $68 $49 $30 $dd $34 $02 $d0 $fe
|
||||
$ca $10 $e0 $a2 $03 $a9 $ff $48 $b5 $13 $9d $03 $02 $28 $3e $03
|
||||
$02 $08 $bd $03 $02 $dd $24 $02 $d0 $fe $68 $49 $7c $dd $34 $02
|
||||
$d0 $fe $ca $10 $e0 $a2 $03 $a9 $00 $48 $b5 $13 $9d $03 $02 $28
|
||||
$7e $03 $02 $08 $bd $03 $02 $dd $28 $02 $d0 $fe $68 $49 $30 $dd
|
||||
$38 $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9 $fe $48 $b5 $13 $9d $03
|
||||
$02 $28 $7e $03 $02 $08 $bd $03 $02 $dd $28 $02 $d0 $fe $68 $49
|
||||
$7c $dd $38 $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9 $01 $48 $b5 $13
|
||||
$9d $03 $02 $28 $7e $03 $02 $08 $bd $03 $02 $dd $2c $02 $d0 $fe
|
||||
$68 $49 $30 $dd $3c $02 $d0 $fe $ca $10 $e0 $a2 $03 $a9 $ff $48
|
||||
$b5 $13 $9d $03 $02 $28 $7e $03 $02 $08 $bd $03 $02 $dd $2c $02
|
||||
$d0 $fe $68 $49 $7c $dd $3c $02 $d0 $fe $ca $10 $e0 $ad $00 $02
|
||||
$c9 $21 $d0 $fe $a9 $22 $8d $00 $02 $a2 $00 $a9 $7e $85 $0c $a9
|
||||
$00 $48 $28 $e6 $0c $08 $a5 $0c $dd $40 $02 $d0 $fe $68 $49 $30
|
||||
$dd $45 $02 $d0 $fe $e8 $e0 $02 $d0 $04 $a9 $fe $85 $0c $e0 $05
|
||||
$d0 $dd $ca $e6 $0c $a9 $00 $48 $28 $c6 $0c $08 $a5 $0c $dd $40
|
||||
$02 $d0 $fe $68 $49 $30 $dd $45 $02 $d0 $fe $ca $30 $0a $e0 $01
|
||||
$d0 $e3 $a9 $81 $85 $0c $d0 $dd $a2 $00 $a9 $7e $85 $0c $a9 $ff
|
||||
$48 $28 $e6 $0c $08 $a5 $0c $dd $40 $02 $d0 $fe $68 $49 $7d $dd
|
||||
$45 $02 $d0 $fe $e8 $e0 $02 $d0 $04 $a9 $fe $85 $0c $e0 $05 $d0
|
||||
$dd $ca $e6 $0c $a9 $ff $48 $28 $c6 $0c $08 $a5 $0c $dd $40 $02
|
||||
$d0 $fe $68 $49 $7d $dd $45 $02 $d0 $fe $ca $30 $0a $e0 $01 $d0
|
||||
$e3 $a9 $81 $85 $0c $d0 $dd $ad $00 $02 $c9 $22 $d0 $fe $a9 $23
|
||||
$8d $00 $02 $a2 $00 $a9 $7e $8d $03 $02 $a9 $00 $48 $28 $ee $03
|
||||
$02 $08 $ad $03 $02 $dd $40 $02 $d0 $fe $68 $49 $30 $dd $45 $02
|
||||
$d0 $fe $e8 $e0 $02 $d0 $05 $a9 $fe $8d $03 $02 $e0 $05 $d0 $da
|
||||
$ca $ee $03 $02 $a9 $00 $48 $28 $ce $03 $02 $08 $ad $03 $02 $dd
|
||||
$40 $02 $d0 $fe $68 $49 $30 $dd $45 $02 $d0 $fe $ca $30 $0b $e0
|
||||
$01 $d0 $e1 $a9 $81 $8d $03 $02 $d0 $da $a2 $00 $a9 $7e $8d $03
|
||||
$02 $a9 $ff $48 $28 $ee $03 $02 $08 $ad $03 $02 $dd $40 $02 $d0
|
||||
$fe $68 $49 $7d $dd $45 $02 $d0 $fe $e8 $e0 $02 $d0 $05 $a9 $fe
|
||||
$8d $03 $02 $e0 $05 $d0 $da $ca $ee $03 $02 $a9 $ff $48 $28 $ce
|
||||
$03 $02 $08 $ad $03 $02 $dd $40 $02 $d0 $fe $68 $49 $7d $dd $45
|
||||
$02 $d0 $fe $ca $30 $0b $e0 $01 $d0 $e1 $a9 $81 $8d $03 $02 $d0
|
||||
$da $ad $00 $02 $c9 $23 $d0 $fe $a9 $24 $8d $00 $02 $a2 $00 $a9
|
||||
$7e $95 $0c $a9 $00 $48 $28 $f6 $0c $08 $b5 $0c $dd $40 $02 $d0
|
||||
$fe $68 $49 $30 $dd $45 $02 $d0 $fe $b5 $0c $e8 $e0 $02 $d0 $02
|
||||
$a9 $fe $e0 $05 $d0 $db $ca $a9 $02 $95 $0c $a9 $00 $48 $28 $d6
|
||||
$0c $08 $b5 $0c $dd $40 $02 $d0 $fe $68 $49 $30 $dd $45 $02 $d0
|
||||
$fe $b5 $0c $ca $30 $08 $e0 $01 $d0 $df $a9 $81 $d0 $db $a2 $00
|
||||
$a9 $7e $95 $0c $a9 $ff $48 $28 $f6 $0c $08 $b5 $0c $dd $40 $02
|
||||
$d0 $fe $68 $49 $7d $dd $45 $02 $d0 $fe $b5 $0c $e8 $e0 $02 $d0
|
||||
$02 $a9 $fe $e0 $05 $d0 $db $ca $a9 $02 $95 $0c $a9 $ff $48 $28
|
||||
$d6 $0c $08 $b5 $0c $dd $40 $02 $d0 $fe $68 $49 $7d $dd $45 $02
|
||||
$d0 $fe $b5 $0c $ca $30 $08 $e0 $01 $d0 $df $a9 $81 $d0 $db $ad
|
||||
$00 $02 $c9 $24 $d0 $fe $a9 $25 $8d $00 $02 $a2 $00 $a9 $7e $9d
|
||||
$03 $02 $a9 $00 $48 $28 $fe $03 $02 $08 $bd $03 $02 $dd $40 $02
|
||||
$d0 $fe $68 $49 $30 $dd $45 $02 $d0 $fe $bd $03 $02 $e8 $e0 $02
|
||||
$d0 $02 $a9 $fe $e0 $05 $d0 $d7 $ca $a9 $02 $9d $03 $02 $a9 $00
|
||||
$48 $28 $de $03 $02 $08 $bd $03 $02 $dd $40 $02 $d0 $fe $68 $49
|
||||
$30 $dd $45 $02 $d0 $fe $bd $03 $02 $ca $30 $08 $e0 $01 $d0 $db
|
||||
$a9 $81 $d0 $d7 $a2 $00 $a9 $7e $9d $03 $02 $a9 $ff $48 $28 $fe
|
||||
$03 $02 $08 $bd $03 $02 $dd $40 $02 $d0 $fe $68 $49 $7d $dd $45
|
||||
$02 $d0 $fe $bd $03 $02 $e8 $e0 $02 $d0 $02 $a9 $fe $e0 $05 $d0
|
||||
$d7 $ca $a9 $02 $9d $03 $02 $a9 $ff $48 $28 $de $03 $02 $08 $bd
|
||||
$03 $02 $dd $40 $02 $d0 $fe $68 $49 $7d $dd $45 $02 $d0 $fe $bd
|
||||
$03 $02 $ca $30 $08 $e0 $01 $d0 $db $a9 $81 $d0 $d7 $ad $00 $02
|
||||
$c9 $25 $d0 $fe $a9 $26 $8d $00 $02 $a2 $03 $b5 $1c $8d $09 $02
|
||||
$a9 $00 $48 $bd $5a $02 $28 $20 $08 $02 $08 $dd $62 $02 $d0 $fe
|
||||
$68 $49 $30 $dd $66 $02 $d0 $fe $ca $10 $e0 $a2 $03 $b5 $1c $8d
|
||||
$09 $02 $a9 $ff $48 $bd $5a $02 $28 $20 $08 $02 $08 $dd $62 $02
|
||||
$d0 $fe $68 $49 $7d $dd $66 $02 $d0 $fe $ca $10 $e0 $a2 $03 $b5
|
||||
$1c $85 $0c $a9 $00 $48 $bd $5a $02 $28 $25 $0c $08 $dd $62 $02
|
||||
$d0 $fe $68 $49 $30 $dd $66 $02 $d0 $fe $ca $10 $e2 $a2 $03 $b5
|
||||
$1c $85 $0c $a9 $ff $48 $bd $5a $02 $28 $25 $0c $08 $dd $62 $02
|
||||
$d0 $fe $68 $49 $7d $dd $66 $02 $d0 $fe $ca $10 $e2 $a2 $03 $b5
|
||||
$1c $8d $03 $02 $a9 $00 $48 $bd $5a $02 $28 $2d $03 $02 $08 $dd
|
||||
$62 $02 $d0 $fe $68 $49 $30 $dd $66 $02 $d0 $fe $ca $10 $e0 $a2
|
||||
$03 $b5 $1c $8d $03 $02 $a9 $ff $48 $bd $5a $02 $28 $2d $03 $02
|
||||
$08 $dd $62 $02 $d0 $fe $68 $49 $7d $dd $66 $02 $d0 $fe $ca $10
|
||||
$02 $a2 $03 $a9 $00 $48 $bd $5a $02 $28 $35 $1c $08 $dd $62 $02
|
||||
$d0 $fe $68 $49 $30 $dd $66 $02 $d0 $fe $ca $10 $e6 $a2 $03 $a9
|
||||
$ff $48 $bd $5a $02 $28 $35 $1c $08 $dd $62 $02 $d0 $fe $68 $49
|
||||
$7d $dd $66 $02 $d0 $fe $ca $10 $e6 $a2 $03 $a9 $00 $48 $bd $5a
|
||||
$02 $28 $3d $4e $02 $08 $dd $62 $02 $d0 $fe $68 $49 $30 $dd $66
|
||||
$02 $d0 $fe $ca $10 $e5 $a2 $03 $a9 $ff $48 $bd $5a $02 $28 $3d
|
||||
$4e $02 $08 $dd $62 $02 $d0 $fe $68 $49 $7d $dd $66 $02 $d0 $fe
|
||||
$ca $10 $e5 $a0 $03 $a9 $00 $48 $b9 $5a $02 $28 $39 $4e $02 $08
|
||||
$d9 $62 $02 $d0 $fe $68 $49 $30 $d9 $66 $02 $d0 $fe $88 $10 $e5
|
||||
$a0 $03 $a9 $ff $48 $b9 $5a $02 $28 $39 $4e $02 $08 $d9 $62 $02
|
||||
$d0 $fe $68 $49 $7d $d9 $66 $02 $d0 $fe $88 $10 $e5 $a2 $06 $a0
|
||||
$03 $a9 $00 $48 $b9 $5a $02 $28 $21 $3a $08 $d9 $62 $02 $d0 $fe
|
||||
$68 $49 $30 $d9 $66 $02 $d0 $fe $ca $ca $88 $10 $e4 $a2 $06 $a0
|
||||
$03 $a9 $ff $48 $b9 $5a $02 $28 $21 $3a $08 $d9 $62 $02 $d0 $fe
|
||||
$68 $49 $7d $d9 $66 $02 $d0 $fe $ca $ca $88 $10 $e4 $a0 $03 $a9
|
||||
$00 $48 $b9 $5a $02 $28 $31 $3a $08 $d9 $62 $02 $d0 $fe $68 $49
|
||||
$30 $d9 $66 $02 $d0 $fe $88 $10 $e6 $a0 $03 $a9 $ff $48 $b9 $5a
|
||||
$02 $28 $31 $3a $08 $d9 $62 $02 $d0 $fe $68 $49 $7d $d9 $66 $02
|
||||
$d0 $fe $88 $10 $e6 $ad $00 $02 $c9 $26 $d0 $fe $a9 $27 $8d $00
|
||||
$02 $a2 $03 $b5 $20 $8d $0c $02 $a9 $00 $48 $bd $5e $02 $28 $20
|
||||
$0b $02 $08 $dd $62 $02 $d0 $fe $68 $49 $30 $dd $66 $02 $d0 $fe
|
||||
$ca $10 $e0 $a2 $03 $b5 $20 $8d $0c $02 $a9 $ff $48 $bd $5e $02
|
||||
$28 $20 $0b $02 $08 $dd $62 $02 $d0 $fe $68 $49 $7d $dd $66 $02
|
||||
$d0 $fe $ca $10 $e0 $a2 $03 $b5 $20 $85 $0c $a9 $00 $48 $bd $5e
|
||||
$02 $28 $45 $0c $08 $dd $62 $02 $d0 $fe $68 $49 $30 $dd $66 $02
|
||||
$d0 $fe $ca $10 $e2 $a2 $03 $b5 $20 $85 $0c $a9 $ff $48 $bd $5e
|
||||
$02 $28 $45 $0c $08 $dd $62 $02 $d0 $fe $68 $49 $7d $dd $66 $02
|
||||
$d0 $fe $ca $10 $e2 $a2 $03 $b5 $20 $8d $03 $02 $a9 $00 $48 $bd
|
||||
$5e $02 $28 $4d $03 $02 $08 $dd $62 $02 $d0 $fe $68 $49 $30 $dd
|
||||
$66 $02 $d0 $fe $ca $10 $e0 $a2 $03 $b5 $20 $8d $03 $02 $a9 $ff
|
||||
$48 $bd $5e $02 $28 $4d $03 $02 $08 $dd $62 $02 $d0 $fe $68 $49
|
||||
$7d $dd $66 $02 $d0 $fe $ca $10 $02 $a2 $03 $a9 $00 $48 $bd $5e
|
||||
$02 $28 $55 $20 $08 $dd $62 $02 $d0 $fe $68 $49 $30 $dd $66 $02
|
||||
$d0 $fe $ca $10 $e6 $a2 $03 $a9 $ff $48 $bd $5e $02 $28 $55 $20
|
||||
$08 $dd $62 $02 $d0 $fe $68 $49 $7d $dd $66 $02 $d0 $fe $ca $10
|
||||
$e6 $a2 $03 $a9 $00 $48 $bd $5e $02 $28 $5d $52 $02 $08 $dd $62
|
||||
$02 $d0 $fe $68 $49 $30 $dd $66 $02 $d0 $fe $ca $10 $e5 $a2 $03
|
||||
$a9 $ff $48 $bd $5e $02 $28 $5d $52 $02 $08 $dd $62 $02 $d0 $fe
|
||||
$68 $49 $7d $dd $66 $02 $d0 $fe $ca $10 $e5 $a0 $03 $a9 $00 $48
|
||||
$b9 $5e $02 $28 $59 $52 $02 $08 $d9 $62 $02 $d0 $fe $68 $49 $30
|
||||
$d9 $66 $02 $d0 $fe $88 $10 $e5 $a0 $03 $a9 $ff $48 $b9 $5e $02
|
||||
$28 $59 $52 $02 $08 $d9 $62 $02 $d0 $fe $68 $49 $7d $d9 $66 $02
|
||||
$d0 $fe $88 $10 $e5 $a2 $06 $a0 $03 $a9 $00 $48 $b9 $5e $02 $28
|
||||
$41 $42 $08 $d9 $62 $02 $d0 $fe $68 $49 $30 $d9 $66 $02 $d0 $fe
|
||||
$ca $ca $88 $10 $e4 $a2 $06 $a0 $03 $a9 $ff $48 $b9 $5e $02 $28
|
||||
$41 $42 $08 $d9 $62 $02 $d0 $fe $68 $49 $7d $d9 $66 $02 $d0 $fe
|
||||
$ca $ca $88 $10 $e4 $a0 $03 $a9 $00 $48 $b9 $5e $02 $28 $51 $42
|
||||
$08 $d9 $62 $02 $d0 $fe $68 $49 $30 $d9 $66 $02 $d0 $fe $88 $10
|
||||
$e6 $a0 $03 $a9 $ff $48 $b9 $5e $02 $28 $51 $42 $08 $d9 $62 $02
|
||||
$d0 $fe $68 $49 $7d $d9 $66 $02 $d0 $fe $88 $10 $e6 $ad $00 $02
|
||||
$c9 $27 $d0 $fe $a9 $28 $8d $00 $02 $a2 $03 $b5 $18 $8d $0f $02
|
||||
$a9 $00 $48 $bd $56 $02 $28 $20 $0e $02 $08 $dd $62 $02 $d0 $fe
|
||||
$68 $49 $30 $dd $66 $02 $d0 $fe $ca $10 $e0 $a2 $03 $b5 $18 $8d
|
||||
$0f $02 $a9 $ff $48 $bd $56 $02 $28 $20 $0e $02 $08 $dd $62 $02
|
||||
$d0 $fe $68 $49 $7d $dd $66 $02 $d0 $fe $ca $10 $e0 $a2 $03 $b5
|
||||
$18 $85 $0c $a9 $00 $48 $bd $56 $02 $28 $05 $0c $08 $dd $62 $02
|
||||
$d0 $fe $68 $49 $30 $dd $66 $02 $d0 $fe $ca $10 $e2 $a2 $03 $b5
|
||||
$18 $85 $0c $a9 $ff $48 $bd $56 $02 $28 $05 $0c $08 $dd $62 $02
|
||||
$d0 $fe $68 $49 $7d $dd $66 $02 $d0 $fe $ca $10 $e2 $a2 $03 $b5
|
||||
$18 $8d $03 $02 $a9 $00 $48 $bd $56 $02 $28 $0d $03 $02 $08 $dd
|
||||
$62 $02 $d0 $fe $68 $49 $30 $dd $66 $02 $d0 $fe $ca $10 $e0 $a2
|
||||
$03 $b5 $18 $8d $03 $02 $a9 $ff $48 $bd $56 $02 $28 $0d $03 $02
|
||||
$08 $dd $62 $02 $d0 $fe $68 $49 $7d $dd $66 $02 $d0 $fe $ca $10
|
||||
$02 $a2 $03 $a9 $00 $48 $bd $56 $02 $28 $15 $18 $08 $dd $62 $02
|
||||
$d0 $fe $68 $49 $30 $dd $66 $02 $d0 $fe $ca $10 $e6 $a2 $03 $a9
|
||||
$ff $48 $bd $56 $02 $28 $15 $18 $08 $dd $62 $02 $d0 $fe $68 $49
|
||||
$7d $dd $66 $02 $d0 $fe $ca $10 $e6 $a2 $03 $a9 $00 $48 $bd $56
|
||||
$02 $28 $1d $4a $02 $08 $dd $62 $02 $d0 $fe $68 $49 $30 $dd $66
|
||||
$02 $d0 $fe $ca $10 $e5 $a2 $03 $a9 $ff $48 $bd $56 $02 $28 $1d
|
||||
$4a $02 $08 $dd $62 $02 $d0 $fe $68 $49 $7d $dd $66 $02 $d0 $fe
|
||||
$ca $10 $e5 $a0 $03 $a9 $00 $48 $b9 $56 $02 $28 $19 $4a $02 $08
|
||||
$d9 $62 $02 $d0 $fe $68 $49 $30 $d9 $66 $02 $d0 $fe $88 $10 $e5
|
||||
$a0 $03 $a9 $ff $48 $b9 $56 $02 $28 $19 $4a $02 $08 $d9 $62 $02
|
||||
$d0 $fe $68 $49 $7d $d9 $66 $02 $d0 $fe $88 $10 $e5 $a2 $06 $a0
|
||||
$03 $a9 $00 $48 $b9 $56 $02 $28 $01 $4a $08 $d9 $62 $02 $d0 $fe
|
||||
$68 $49 $30 $d9 $66 $02 $d0 $fe $ca $ca $88 $10 $e4 $a2 $06 $a0
|
||||
$03 $a9 $ff $48 $b9 $56 $02 $28 $01 $4a $08 $d9 $62 $02 $d0 $fe
|
||||
$68 $49 $7d $d9 $66 $02 $d0 $fe $ca $ca $88 $10 $e4 $a0 $03 $a9
|
||||
$00 $48 $b9 $56 $02 $28 $11 $4a $08 $d9 $62 $02 $d0 $fe $68 $49
|
||||
$30 $d9 $66 $02 $d0 $fe $88 $10 $e6 $a0 $03 $a9 $ff $48 $b9 $56
|
||||
$02 $28 $11 $4a $08 $d9 $62 $02 $d0 $fe $68 $49 $7d $d9 $66 $02
|
||||
$d0 $fe $88 $10 $e6 $58 $ad $00 $02 $c9 $28 $d0 $fe $a9 $29 $8d
|
||||
$00 $02 $d8 $a2 $0e $a0 $ff $a9 $00 $85 $0c $85 $0d $85 $0e $8d
|
||||
$03 $02 $85 $0f $85 $10 $a9 $ff $85 $12 $8d $04 $02 $a9 $02 $85
|
||||
$11 $18 $20 $7c $35 $e6 $0c $e6 $0f $08 $08 $68 $29 $82 $28 $d0
|
||||
$02 $e6 $10 $05 $10 $85 $11 $38 $20 $7c $35 $c6 $0c $e6 $0d $d0
|
||||
$e0 $a9 $00 $85 $10 $ee $03 $02 $e6 $0e $08 $68 $29 $82 $85 $11
|
||||
$c6 $12 $ce $04 $02 $a5 $0e $85 $0f $d0 $c6 $ad $00 $02 $c9 $29
|
||||
$d0 $fe $a9 $2a $8d $00 $02 $f8 $a2 $0e $a0 $ff $a9 $99 $85 $0d
|
||||
$85 $0e $8d $03 $02 $85 $0f $a9 $01 $85 $0c $85 $10 $a9 $00 $85
|
||||
$12 $8d $04 $02 $38 $20 $49 $34 $c6 $0c $a5 $0f $d0 $08 $c6 $10
|
||||
$a9 $99 $85 $0f $d0 $12 $29 $0f $d0 $0c $c6 $0f $c6 $0f $c6 $0f
|
||||
$c6 $0f $c6 $0f $c6 $0f $c6 $0f $18 $20 $49 $34 $e6 $0c $a5 $0d
|
||||
$f0 $15 $29 $0f $d0 $0c $c6 $0d $c6 $0d $c6 $0d $c6 $0d $c6 $0d
|
||||
$c6 $0d $c6 $0d $4c $64 $33 $a9 $99 $85 $0d $a5 $0e $f0 $30 $29
|
||||
$0f $d0 $18 $c6 $0e $c6 $0e $c6 $0e $c6 $0e $c6 $0e $c6 $0e $e6
|
||||
$12 $e6 $12 $e6 $12 $e6 $12 $e6 $12 $e6 $12 $c6 $0e $e6 $12 $a5
|
||||
$12 $8d $04 $02 $a5 $0e $8d $03 $02 $85 $0f $e6 $10 $d0 $85 $ad
|
||||
$00 $02 $c9 $2a $d0 $fe $a9 $2b $8d $00 $02 $18 $d8 $08 $a9 $55
|
||||
$69 $55 $c9 $aa $d0 $fe $18 $f8 $08 $a9 $55 $69 $55 $c9 $10 $d0
|
||||
$fe $d8 $28 $a9 $55 $69 $55 $c9 $10 $d0 $fe $28 $a9 $55 $69 $55
|
||||
$c9 $aa $d0 $fe $18 $a9 $34 $48 $a9 $2f $48 $08 $f8 $a9 $34 $48
|
||||
$a9 $26 $48 $08 $d8 $40 $a9 $55 $69 $55 $c9 $10 $d0 $fe $40 $a9
|
||||
$55 $69 $55 $c9 $aa $d0 $fe $ad $00 $02 $c9 $2b $d0 $fe $a9 $f0
|
||||
$8d $00 $02 $4c $43 $34 $4c $00 $04 $08 $a5 $0d $65 $0e $08 $c5
|
||||
$0f $d0 $fe $68 $29 $01 $c5 $10 $d0 $fe $28 $08 $a5 $0d $e5 $12
|
||||
$08 $c5 $0f $d0 $fe $68 $29 $01 $c5 $10 $d0 $fe $28 $08 $a5 $0d
|
||||
$6d $03 $02 $08 $c5 $0f $d0 $fe $68 $29 $01 $c5 $10 $d0 $fe $28
|
||||
$08 $a5 $0d $ed $04 $02 $08 $c5 $0f $d0 $fe $68 $29 $01 $c5 $10
|
||||
$d0 $fe $28 $08 $a5 $0e $8d $12 $02 $a5 $0d $20 $11 $02 $08 $c5
|
||||
$0f $d0 $fe $68 $29 $01 $c5 $10 $d0 $fe $28 $08 $a5 $12 $8d $15
|
||||
$02 $a5 $0d $20 $14 $02 $08 $c5 $0f $d0 $fe $68 $29 $01 $c5 $10
|
||||
$d0 $fe $28 $08 $a5 $0d $75 $00 $08 $c5 $0f $d0 $fe $68 $29 $01
|
||||
$c5 $10 $d0 $fe $28 $08 $a5 $0d $f5 $04 $08 $c5 $0f $d0 $fe $68
|
||||
$29 $01 $c5 $10 $d0 $fe $28 $08 $a5 $0d $7d $f5 $01 $08 $c5 $0f
|
||||
$d0 $fe $68 $29 $01 $c5 $10 $d0 $fe $28 $08 $a5 $0d $fd $f6 $01
|
||||
$08 $c5 $0f $d0 $fe $68 $29 $01 $c5 $10 $d0 $fe $28 $08 $a5 $0d
|
||||
$79 $04 $01 $08 $c5 $0f $d0 $fe $68 $29 $01 $c5 $10 $d0 $fe $28
|
||||
$08 $a5 $0d $f9 $05 $01 $08 $c5 $0f $d0 $fe $68 $29 $01 $c5 $10
|
||||
$d0 $fe $28 $08 $a5 $0d $61 $44 $08 $c5 $0f $d0 $fe $68 $29 $01
|
||||
$c5 $10 $d0 $fe $28 $08 $a5 $0d $e1 $46 $08 $c5 $0f $d0 $fe $68
|
||||
$29 $01 $c5 $10 $d0 $fe $28 $08 $a5 $0d $71 $56 $08 $c5 $0f $d0
|
||||
$fe $68 $29 $01 $c5 $10 $d0 $fe $28 $08 $a5 $0d $f1 $58 $08 $c5
|
||||
$0f $d0 $fe $68 $29 $01 $c5 $10 $d0 $fe $28 $60 $a5 $11 $29 $83
|
||||
$48 $a5 $0d $45 $0e $30 $0a $a5 $0d $45 $0f $10 $04 $68 $09 $40
|
||||
$48 $68 $85 $11 $08 $a5 $0d $65 $0e $08 $c5 $0f $d0 $fe $68 $29
|
||||
$c3 $c5 $11 $d0 $fe $28 $08 $a5 $0d $e5 $12 $08 $c5 $0f $d0 $fe
|
||||
$68 $29 $c3 $c5 $11 $d0 $fe $28 $08 $a5 $0d $6d $03 $02 $08 $c5
|
||||
$0f $d0 $fe $68 $29 $c3 $c5 $11 $d0 $fe $28 $08 $a5 $0d $ed $04
|
||||
$02 $08 $c5 $0f $d0 $fe $68 $29 $c3 $c5 $11 $d0 $fe $28 $08 $a5
|
||||
$0e $8d $12 $02 $a5 $0d $20 $11 $02 $08 $c5 $0f $d0 $fe $68 $29
|
||||
$c3 $c5 $11 $d0 $fe $28 $08 $a5 $12 $8d $15 $02 $a5 $0d $20 $14
|
||||
$02 $08 $c5 $0f $d0 $fe $68 $29 $c3 $c5 $11 $d0 $fe $28 $08 $a5
|
||||
$0d $75 $00 $08 $c5 $0f $d0 $fe $68 $29 $c3 $c5 $11 $d0 $fe $28
|
||||
$08 $a5 $0d $f5 $04 $08 $c5 $0f $d0 $fe $68 $29 $c3 $c5 $11 $d0
|
||||
$fe $28 $08 $a5 $0d $7d $f5 $01 $08 $c5 $0f $d0 $fe $68 $29 $c3
|
||||
$c5 $11 $d0 $fe $28 $08 $a5 $0d $fd $f6 $01 $08 $c5 $0f $d0 $fe
|
||||
$68 $29 $c3 $c5 $11 $d0 $fe $28 $08 $a5 $0d $79 $04 $01 $08 $c5
|
||||
$0f $d0 $fe $68 $29 $c3 $c5 $11 $d0 $fe $28 $08 $a5 $0d $f9 $05
|
||||
$01 $08 $c5 $0f $d0 $fe $68 $29 $c3 $c5 $11 $d0 $fe $28 $08 $a5
|
||||
$0d $61 $44 $08 $c5 $0f $d0 $fe $68 $29 $c3 $c5 $11 $d0 $fe $28
|
||||
$08 $a5 $0d $e1 $46 $08 $c5 $0f $d0 $fe $68 $29 $c3 $c5 $11 $d0
|
||||
$fe $28 $08 $a5 $0d $71 $56 $08 $c5 $0f $d0 $fe $68 $29 $c3 $c5
|
||||
$11 $d0 $fe $28 $08 $a5 $0d $f1 $58 $08 $c5 $0f $d0 $fe $68 $29
|
||||
$c3 $c5 $11 $d0 $fe $28 $60 $88 $88 $08 $88 $88 $88 $28 $b0 $fe
|
||||
$70 $fe $30 $fe $f0 $fe $c9 $46 $d0 $fe $e0 $41 $d0 $fe $c0 $4f
|
||||
$d0 $fe $48 $8a $48 $ba $e0 $fd $d0 $fe $68 $aa $a9 $ff $48 $28
|
||||
$68 $e8 $49 $aa $4c $0f $09 $00 $01 $37 $64 $09 $4c $fc $36 $88
|
||||
$88 $08 $88 $88 $88 $28 $b0 $fe $70 $fe $30 $fe $f0 $fe $c9 $49
|
||||
$d0 $fe $e0 $4e $d0 $fe $c0 $41 $d0 $fe $48 $8a $48 $ba $e0 $fd
|
||||
$d0 $fe $68 $aa $a9 $ff $48 $28 $68 $e8 $49 $aa $6c $fa $36 $4c
|
||||
$2f $37 $88 $88 $08 $88 $88 $88 $28 $b0 $fe $70 $fe $30 $fe $f0
|
||||
$fe $c9 $4a $d0 $fe $e0 $53 $d0 $fe $c0 $4f $d0 $fe $48 $8a $48
|
||||
$ba $e0 $fb $d0 $fe $ad $ff $01 $c9 $09 $d0 $fe $ad $fe $01 $c9
|
||||
$9a $d0 $fe $a9 $ff $48 $28 $68 $aa $68 $e8 $49 $aa $60 $4c $6e
|
||||
$37 $4c $71 $37 $4c $74 $37 $88 $88 $08 $88 $88 $88 $c9 $42 $d0
|
||||
$fe $e0 $52 $d0 $fe $c0 $48 $d0 $fe $85 $0a $86 $0b $ba $bd $02
|
||||
$01 $c9 $30 $d0 $fe $68 $c9 $34 $d0 $fe $ba $e0 $fc $d0 $fe $ad
|
||||
$ff $01 $c9 $09 $d0 $fe $ad $fe $01 $c9 $d1 $d0 $fe $a9 $ff $48
|
||||
$28 $a6 $0b $e8 $a5 $0a $49 $aa $40 $4c $b9 $37 $00 $00 $00 $00
|
||||
ORG
|
||||
$fff0
|
||||
$00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $71 $37 $74 $37 $79 $37
|
||||
EXEC
|
||||
$0400
|
14236
6502_func_test.lst
Normal file
14236
6502_func_test.lst
Normal file
File diff suppressed because it is too large
Load Diff
6011
6502_functional_test.asm
Normal file
6011
6502_functional_test.asm
Normal file
File diff suppressed because it is too large
Load Diff
124
BCDCodes.dev
124
BCDCodes.dev
@ -1,62 +1,62 @@
|
||||
[Project]
|
||||
FileName=BCDCodes.dev
|
||||
Name=BCDCodes
|
||||
Type=1
|
||||
Ver=2
|
||||
ObjFiles=
|
||||
Includes=
|
||||
Libs=
|
||||
PrivateResource=
|
||||
ResourceIncludes=
|
||||
MakeIncludes=
|
||||
Compiler=
|
||||
CppCompiler=
|
||||
Linker=
|
||||
IsCpp=0
|
||||
Icon=
|
||||
ExeOutput=
|
||||
ObjectOutput=
|
||||
LogOutput=
|
||||
LogOutputEnabled=0
|
||||
OverrideOutput=0
|
||||
OverrideOutputName=
|
||||
HostApplication=
|
||||
UseCustomMakefile=0
|
||||
CustomMakefile=
|
||||
CommandLine=
|
||||
Folders=
|
||||
IncludeVersionInfo=0
|
||||
SupportXPThemes=0
|
||||
CompilerSet=3
|
||||
CompilerSettings=0000000100000000000000000
|
||||
UnitCount=1
|
||||
|
||||
[VersionInfo]
|
||||
Major=1
|
||||
Minor=0
|
||||
Release=0
|
||||
Build=0
|
||||
LanguageID=1033
|
||||
CharsetID=1252
|
||||
CompanyName=
|
||||
FileVersion=
|
||||
FileDescription=Developed using the Dev-C++ IDE
|
||||
InternalName=
|
||||
LegalCopyright=
|
||||
LegalTrademarks=
|
||||
OriginalFilename=
|
||||
ProductName=
|
||||
ProductVersion=
|
||||
AutoIncBuildNr=0
|
||||
SyncProduct=1
|
||||
|
||||
[Unit1]
|
||||
FileName=bcd.c
|
||||
CompileCpp=0
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Project]
|
||||
FileName=BCDCodes.dev
|
||||
Name=BCDCodes
|
||||
Type=1
|
||||
Ver=2
|
||||
ObjFiles=
|
||||
Includes=
|
||||
Libs=
|
||||
PrivateResource=
|
||||
ResourceIncludes=
|
||||
MakeIncludes=
|
||||
Compiler=
|
||||
CppCompiler=
|
||||
Linker=
|
||||
IsCpp=0
|
||||
Icon=
|
||||
ExeOutput=
|
||||
ObjectOutput=
|
||||
LogOutput=
|
||||
LogOutputEnabled=0
|
||||
OverrideOutput=0
|
||||
OverrideOutputName=
|
||||
HostApplication=
|
||||
UseCustomMakefile=0
|
||||
CustomMakefile=
|
||||
CommandLine=
|
||||
Folders=
|
||||
IncludeVersionInfo=0
|
||||
SupportXPThemes=0
|
||||
CompilerSet=3
|
||||
CompilerSettings=0000000100000000000000000
|
||||
UnitCount=1
|
||||
|
||||
[VersionInfo]
|
||||
Major=1
|
||||
Minor=0
|
||||
Release=0
|
||||
Build=0
|
||||
LanguageID=1033
|
||||
CharsetID=1252
|
||||
CompanyName=
|
||||
FileVersion=
|
||||
FileDescription=Developed using the Dev-C++ IDE
|
||||
InternalName=
|
||||
LegalCopyright=
|
||||
LegalTrademarks=
|
||||
OriginalFilename=
|
||||
ProductName=
|
||||
ProductVersion=
|
||||
AutoIncBuildNr=0
|
||||
SyncProduct=1
|
||||
|
||||
[Unit1]
|
||||
FileName=bcd.c
|
||||
CompileCpp=0
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
|
8
BCDCodes.layout
Normal file
8
BCDCodes.layout
Normal file
@ -0,0 +1,8 @@
|
||||
[Editors]
|
||||
Order=0
|
||||
Focused=0
|
||||
[Editor_0]
|
||||
CursorCol=1
|
||||
CursorRow=34
|
||||
TopLine=1
|
||||
LeftChar=1
|
62
Bin2Hex.dev
Normal file
62
Bin2Hex.dev
Normal file
@ -0,0 +1,62 @@
|
||||
[Project]
|
||||
FileName=Bin2Hex.dev
|
||||
Name=Bin2Hex
|
||||
Type=1
|
||||
Ver=2
|
||||
ObjFiles=
|
||||
Includes=
|
||||
Libs=
|
||||
PrivateResource=
|
||||
ResourceIncludes=
|
||||
MakeIncludes=
|
||||
Compiler=
|
||||
CppCompiler=
|
||||
Linker=
|
||||
IsCpp=0
|
||||
Icon=
|
||||
ExeOutput=
|
||||
ObjectOutput=
|
||||
LogOutput=
|
||||
LogOutputEnabled=0
|
||||
OverrideOutput=0
|
||||
OverrideOutputName=
|
||||
HostApplication=
|
||||
UseCustomMakefile=0
|
||||
CustomMakefile=
|
||||
CommandLine=
|
||||
Folders=
|
||||
IncludeVersionInfo=0
|
||||
SupportXPThemes=0
|
||||
CompilerSet=3
|
||||
CompilerSettings=0000000100000000000000000
|
||||
UnitCount=1
|
||||
|
||||
[VersionInfo]
|
||||
Major=1
|
||||
Minor=0
|
||||
Release=0
|
||||
Build=0
|
||||
LanguageID=1033
|
||||
CharsetID=1252
|
||||
CompanyName=
|
||||
FileVersion=
|
||||
FileDescription=Developed using the Dev-C++ IDE
|
||||
InternalName=
|
||||
LegalCopyright=
|
||||
LegalTrademarks=
|
||||
OriginalFilename=
|
||||
ProductName=
|
||||
ProductVersion=
|
||||
AutoIncBuildNr=0
|
||||
SyncProduct=1
|
||||
|
||||
[Unit1]
|
||||
FileName=bin2hex.c
|
||||
CompileCpp=0
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
8
Bin2Hex.layout
Normal file
8
Bin2Hex.layout
Normal file
@ -0,0 +1,8 @@
|
||||
[Editor_0]
|
||||
CursorCol=26
|
||||
CursorRow=111
|
||||
TopLine=28
|
||||
LeftChar=1
|
||||
[Editors]
|
||||
Order=0
|
||||
Focused=0
|
557
Display.cpp
557
Display.cpp
@ -1,245 +1,312 @@
|
||||
#include "Display.h"
|
||||
#include <ctype.h>
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <string.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
Display::Display()
|
||||
{
|
||||
InitScr();
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
Display::~Display()
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: InitScr()
|
||||
* Purpose: Initialize screen.
|
||||
* Arguments: n/a
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::InitScr()
|
||||
{
|
||||
ClrScr();
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::ScrollUp()
|
||||
{
|
||||
for (int row=0; row<SCREENDIM_ROW-1; row++) {
|
||||
for (int col=0; col<SCREENDIM_COL; col++) {
|
||||
mScreen[col][row] = mScreen[col][row+1];
|
||||
}
|
||||
}
|
||||
for (int col=0; col<SCREENDIM_COL; col++) {
|
||||
mScreen[col][SCREENDIM_ROW-1] = ' ';
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GotoXY()
|
||||
* Purpose: Move cursor to new coordinates.
|
||||
* Arguments: col, row - integer values, new cursor coordinates
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::GotoXY(unsigned int col, unsigned int row)
|
||||
{
|
||||
if (col < SCREENDIM_COL && row < SCREENDIM_ROW) {
|
||||
mCursorCoord.col = col;
|
||||
mCursorCoord.row = row;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
bool Display::IsSpecChar(char c)
|
||||
{
|
||||
bool ret = false;
|
||||
char sct[] = {SCREENSPECCHARS_NL,
|
||||
SCREENSPECCHARS_CR,
|
||||
SCREENSPECCHARS_TB,
|
||||
SCREENSPECCHARS_BS,
|
||||
SCREENSPECCHARS_BE,
|
||||
0};
|
||||
|
||||
for (unsigned int i=0; i<strlen(sct); i++) {
|
||||
if (c == sct[i]) {
|
||||
ret = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: PutChar()
|
||||
* Purpose: Output character to console. If going outside
|
||||
* lower-right corner, scroll the contents up.
|
||||
* Arguments: c - character to output.
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::PutChar(char c)
|
||||
{
|
||||
if (isalnum(c) || ispunct(c) || isspace(c) || IsSpecChar(c))
|
||||
{
|
||||
if (c == SCREENSPECCHARS_NL) {
|
||||
//mCursorCoord.col = 0;
|
||||
mCursorCoord.row++;
|
||||
if (mCursorCoord.row >= SCREENDIM_ROW) {
|
||||
ScrollUp();
|
||||
mCursorCoord.row = SCREENDIM_ROW-1;
|
||||
}
|
||||
} else if (c == SCREENSPECCHARS_CR) {
|
||||
mCursorCoord.col = 0;
|
||||
} else if (c == SCREENSPECCHARS_TB) {
|
||||
mCursorCoord.col += TABSIZE;
|
||||
if (mCursorCoord.col >= SCREENDIM_COL) {
|
||||
mCursorCoord.col = SCREENDIM_COL-1; // must work on it some more
|
||||
}
|
||||
} else if (c == SCREENSPECCHARS_BS) {
|
||||
if (mCursorCoord.col > 0) mCursorCoord.col--;
|
||||
} else if (c == SCREENSPECCHARS_BE) {
|
||||
// no action
|
||||
}
|
||||
else {
|
||||
mScreen[mCursorCoord.col][mCursorCoord.row] = c;
|
||||
mCursorCoord.col++;
|
||||
if (mCursorCoord.col >= SCREENDIM_COL) {
|
||||
mCursorCoord.col = 0;
|
||||
mCursorCoord.row++;
|
||||
if (mCursorCoord.row >= SCREENDIM_ROW) {
|
||||
ScrollUp();
|
||||
mCursorCoord.row = SCREENDIM_ROW-1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: ClrScr()
|
||||
* Purpose: Fill the screen with spaces. Set cursor in left-upper
|
||||
* corner.
|
||||
* Arguments: n/a
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::ClrScr()
|
||||
{
|
||||
for (int col=0; col<SCREENDIM_COL; col++) {
|
||||
for (int row=0; row<SCREENDIM_ROW; row++) {
|
||||
mScreen[col][row] = ' ';
|
||||
}
|
||||
}
|
||||
mCursorCoord.col = mCursorCoord.row = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
char Display::GetCharAt(unsigned int col, unsigned int row)
|
||||
{
|
||||
char c = -1;
|
||||
|
||||
if (col < SCREENDIM_COL && row < SCREENDIM_ROW)
|
||||
c = mScreen[col][row];
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: ShowScr()
|
||||
* Purpose: Display contents of the emulated console on... well,
|
||||
* real console.
|
||||
* Arguments: n/a
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::ShowScr()
|
||||
{
|
||||
for (int row=0; row<SCREENDIM_ROW; row++) {
|
||||
string line;
|
||||
line.clear();
|
||||
for (int col=0; col<SCREENDIM_COL; col++) {
|
||||
char c = mScreen[col][row];
|
||||
if (mCursorCoord.col == col && mCursorCoord.row == row) {
|
||||
c = '_';
|
||||
}
|
||||
line = line + c;
|
||||
//putchar(mScreen[col][row]);
|
||||
}
|
||||
cout << line;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GetCursorCoord()
|
||||
* Purpose: Get cursor coordinates.
|
||||
* Arguments: n/a
|
||||
* Returns: pointer to cursor coordinates
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
CursorCoord *Display::GetCursorCoord()
|
||||
{
|
||||
return &mCursorCoord;
|
||||
}
|
||||
|
||||
} // namespace MKBasic
|
||||
#include "Display.h"
|
||||
#include <ctype.h>
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <string.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
Display::Display()
|
||||
{
|
||||
InitScr();
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
Display::~Display()
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: InitScr()
|
||||
* Purpose: Initialize screen.
|
||||
* Arguments: n/a
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::InitScr()
|
||||
{
|
||||
mScrLines = SCREENDIM_ROW;
|
||||
mScrColumns = SCREENDIM_COL;
|
||||
mShellConsoleWidth = GetConsoleWidth();
|
||||
if (mScrColumns > mShellConsoleWidth) {
|
||||
mScrColumns = mShellConsoleWidth;
|
||||
}
|
||||
ClrScr();
|
||||
}
|
||||
|
||||
#if defined(WINDOWS)
|
||||
|
||||
#include <windows.h>
|
||||
#include <conio.h>
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GetConsoleWidth()
|
||||
* Purpose: Obtain the width of shell console (the real one, not
|
||||
* the emulated one) on Windows.
|
||||
* Arguments: n/a
|
||||
* Returns: int - width of the shell console.
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
int Display::GetConsoleWidth()
|
||||
{
|
||||
HANDLE hStdOut;
|
||||
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
||||
|
||||
hStdOut = GetStdHandle( STD_OUTPUT_HANDLE );
|
||||
if (hStdOut == INVALID_HANDLE_VALUE) return -1;
|
||||
|
||||
if (!GetConsoleScreenBufferInfo( hStdOut, &csbi )) return -2;
|
||||
|
||||
return csbi.dwSize.X;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(LINUX)
|
||||
|
||||
#include <termcap.h>
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GetConsoleWidth()
|
||||
* Purpose: Obtain the width of shell console (the real one, not
|
||||
* the emulated one) on Linux.
|
||||
* Arguments: n/a
|
||||
* Returns: int - width of the shell console.
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
int Display::GetConsoleWidth()
|
||||
{
|
||||
unsigned int conwidth = SCREENDIM_COL;
|
||||
char *termtype = getenv("TERM");
|
||||
static char termbuf[2048];
|
||||
|
||||
if (tgetent(termbuf, termtype) < 0) {
|
||||
cout << "WARNING: Could not access the termcap data base." << endl;
|
||||
cout << " Unable to determine console width." << endl;
|
||||
} else {
|
||||
conwidth = tgetnum("co");
|
||||
}
|
||||
|
||||
return conwidth;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::ScrollUp()
|
||||
{
|
||||
for (unsigned int row=0; row<mScrLines-1; row++) {
|
||||
for (unsigned int col=0; col<mScrColumns; col++) {
|
||||
mScreen[col][row] = mScreen[col][row+1];
|
||||
}
|
||||
}
|
||||
for (unsigned int col=0; col<mScrColumns; col++) {
|
||||
mScreen[col][mScrLines-1] = ' ';
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GotoXY()
|
||||
* Purpose: Move cursor to new coordinates.
|
||||
* Arguments: col, row - integer values, new cursor coordinates
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::GotoXY(unsigned int col, unsigned int row)
|
||||
{
|
||||
if (col < mScrColumns && row < mScrLines) {
|
||||
mCursorCoord.col = col;
|
||||
mCursorCoord.row = row;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
bool Display::IsSpecChar(char c)
|
||||
{
|
||||
bool ret = false;
|
||||
char sct[] = {SCREENSPECCHARS_NL,
|
||||
SCREENSPECCHARS_CR,
|
||||
SCREENSPECCHARS_TB,
|
||||
SCREENSPECCHARS_BS,
|
||||
SCREENSPECCHARS_BE,
|
||||
0};
|
||||
|
||||
for (unsigned int i=0; i<strlen(sct); i++) {
|
||||
if (c == sct[i]) {
|
||||
ret = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: PutChar()
|
||||
* Purpose: Output character to console. If going outside
|
||||
* lower-right corner, scroll the contents up.
|
||||
* Arguments: c - character to output.
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::PutChar(char c)
|
||||
{
|
||||
if (isalnum(c) || ispunct(c) || isspace(c) || IsSpecChar(c))
|
||||
{
|
||||
if (c == SCREENSPECCHARS_NL) {
|
||||
//mCursorCoord.col = 0;
|
||||
mCursorCoord.row++;
|
||||
if (mCursorCoord.row >= mScrLines) {
|
||||
ScrollUp();
|
||||
mCursorCoord.row = mScrLines-1;
|
||||
}
|
||||
} else if (c == SCREENSPECCHARS_CR) {
|
||||
mCursorCoord.col = 0;
|
||||
} else if (c == SCREENSPECCHARS_TB) {
|
||||
mCursorCoord.col += TABSIZE;
|
||||
if (mCursorCoord.col >= mScrColumns) {
|
||||
mCursorCoord.col = mScrColumns-1; // must work on it some more
|
||||
}
|
||||
} else if (c == SCREENSPECCHARS_BS) {
|
||||
if (mCursorCoord.col > 0) mCursorCoord.col--;
|
||||
} else if (c == SCREENSPECCHARS_BE) {
|
||||
// no action
|
||||
}
|
||||
else {
|
||||
mScreen[mCursorCoord.col][mCursorCoord.row] = c;
|
||||
mCursorCoord.col++;
|
||||
if (mCursorCoord.col >= mScrColumns) {
|
||||
mCursorCoord.col = 0;
|
||||
mCursorCoord.row++;
|
||||
if (mCursorCoord.row >= mScrLines) {
|
||||
ScrollUp();
|
||||
mCursorCoord.row = mScrLines-1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: ClrScr()
|
||||
* Purpose: Fill the screen with spaces. Set cursor in left-upper
|
||||
* corner.
|
||||
* Arguments: n/a
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::ClrScr()
|
||||
{
|
||||
for (unsigned int col=0; col<mScrColumns; col++) {
|
||||
for (unsigned int row=0; row<mScrLines; row++) {
|
||||
mScreen[col][row] = ' ';
|
||||
}
|
||||
}
|
||||
mCursorCoord.col = mCursorCoord.row = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
char Display::GetCharAt(unsigned int col, unsigned int row)
|
||||
{
|
||||
char c = -1;
|
||||
|
||||
if (col < mScrColumns && row < mScrLines)
|
||||
c = mScreen[col][row];
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: ShowScr()
|
||||
* Purpose: Display contents of the emulated console on a... well,
|
||||
* real console.
|
||||
* Arguments: n/a
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Display::ShowScr()
|
||||
{
|
||||
for (unsigned int row=0; row<mScrLines; row++) {
|
||||
string line;
|
||||
line.clear();
|
||||
for (unsigned int col=0; col<mScrColumns; col++) {
|
||||
char c = mScreen[col][row];
|
||||
if (mCursorCoord.col == col && mCursorCoord.row == row) {
|
||||
c = '_';
|
||||
}
|
||||
line = line + c;
|
||||
}
|
||||
cout << line;
|
||||
// add extra NL if the real console is wider than emulated one
|
||||
if (mShellConsoleWidth > mScrColumns) cout << endl;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GetCursorCoord()
|
||||
* Purpose: Get cursor coordinates.
|
||||
* Arguments: n/a
|
||||
* Returns: pointer to cursor coordinates
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
CursorCoord *Display::GetCursorCoord()
|
||||
{
|
||||
return &mCursorCoord;
|
||||
}
|
||||
|
||||
} // namespace MKBasic
|
||||
|
114
Display.h
114
Display.h
@ -1,54 +1,60 @@
|
||||
#ifndef DISPLAY_H
|
||||
#define DISPLAY_H
|
||||
|
||||
#define TABSIZE 4
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
enum eScreenDimensions {
|
||||
SCREENDIM_COL = 80,
|
||||
SCREENDIM_ROW = 24
|
||||
};
|
||||
|
||||
enum eScreenSpecChars {
|
||||
SCREENSPECCHARS_NL = (int)'\n', // new line
|
||||
SCREENSPECCHARS_CR = (int)'\r', // caret
|
||||
SCREENSPECCHARS_TB = (int)'\t', // tab
|
||||
SCREENSPECCHARS_BS = (int)'\b', // backspace
|
||||
SCREENSPECCHARS_BE = (int)'\a' // bell
|
||||
};
|
||||
|
||||
struct CursorCoord {
|
||||
int row;
|
||||
int col;
|
||||
};
|
||||
|
||||
class Display
|
||||
{
|
||||
public:
|
||||
|
||||
Display();
|
||||
~Display();
|
||||
void GotoXY(unsigned int col, unsigned int row);
|
||||
void PutChar(char c);
|
||||
void ClrScr();
|
||||
char GetCharAt(unsigned int col, unsigned int row);
|
||||
void ShowScr();
|
||||
CursorCoord *GetCursorCoord();
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
char mScreen[SCREENDIM_COL][SCREENDIM_ROW];
|
||||
CursorCoord mCursorCoord;
|
||||
|
||||
void InitScr();
|
||||
void ScrollUp();
|
||||
bool IsSpecChar(char c);
|
||||
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
#ifndef DISPLAY_H
|
||||
#define DISPLAY_H
|
||||
|
||||
#include "system.h"
|
||||
|
||||
#define TABSIZE 4
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
enum eScreenDimensions {
|
||||
SCREENDIM_COL = 80,
|
||||
SCREENDIM_ROW = 24
|
||||
};
|
||||
|
||||
enum eScreenSpecChars {
|
||||
SCREENSPECCHARS_NL = (int)'\n', // new line
|
||||
SCREENSPECCHARS_CR = (int)'\r', // caret
|
||||
SCREENSPECCHARS_TB = (int)'\t', // tab
|
||||
SCREENSPECCHARS_BS = (int)'\b', // backspace
|
||||
SCREENSPECCHARS_BE = (int)'\a' // bell
|
||||
};
|
||||
|
||||
struct CursorCoord {
|
||||
unsigned int row;
|
||||
unsigned int col;
|
||||
};
|
||||
|
||||
class Display
|
||||
{
|
||||
public:
|
||||
|
||||
Display();
|
||||
~Display();
|
||||
void GotoXY(unsigned int col, unsigned int row);
|
||||
void PutChar(char c);
|
||||
void ClrScr();
|
||||
char GetCharAt(unsigned int col, unsigned int row);
|
||||
void ShowScr();
|
||||
CursorCoord *GetCursorCoord();
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
char mScreen[SCREENDIM_COL][SCREENDIM_ROW];
|
||||
CursorCoord mCursorCoord;
|
||||
unsigned int mShellConsoleWidth;
|
||||
unsigned int mScrLines;
|
||||
unsigned int mScrColumns;
|
||||
|
||||
void InitScr();
|
||||
void ScrollUp();
|
||||
bool IsSpecChar(char c);
|
||||
int GetConsoleWidth();
|
||||
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
|
26
MKBasic.cpp
26
MKBasic.cpp
@ -1,13 +1,13 @@
|
||||
#include "MKBasic.h"
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
MKBasic::MKBasic()
|
||||
{
|
||||
}
|
||||
|
||||
MKBasic::~MKBasic()
|
||||
{
|
||||
}
|
||||
|
||||
} // namespace MKBasic
|
||||
#include "MKBasic.h"
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
MKBasic::MKBasic()
|
||||
{
|
||||
}
|
||||
|
||||
MKBasic::~MKBasic()
|
||||
{
|
||||
}
|
||||
|
||||
} // namespace MKBasic
|
||||
|
374
MKBasic.dev
374
MKBasic.dev
@ -1,182 +1,192 @@
|
||||
[Project]
|
||||
FileName=MKBasic.dev
|
||||
Name=MKBasic
|
||||
Type=1
|
||||
Ver=2
|
||||
ObjFiles=
|
||||
Includes=
|
||||
Libs=
|
||||
PrivateResource=
|
||||
ResourceIncludes=
|
||||
MakeIncludes=
|
||||
Compiler=
|
||||
CppCompiler=
|
||||
Linker=
|
||||
IsCpp=1
|
||||
Icon=
|
||||
ExeOutput=
|
||||
ObjectOutput=
|
||||
LogOutput=
|
||||
LogOutputEnabled=0
|
||||
OverrideOutput=0
|
||||
OverrideOutputName=MKBasic.exe
|
||||
HostApplication=
|
||||
UseCustomMakefile=0
|
||||
CustomMakefile=
|
||||
CommandLine=
|
||||
Folders=
|
||||
IncludeVersionInfo=0
|
||||
SupportXPThemes=0
|
||||
CompilerSet=3
|
||||
CompilerSettings=00000001c0111000001000000
|
||||
UnitCount=13
|
||||
|
||||
[VersionInfo]
|
||||
Major=1
|
||||
Minor=0
|
||||
Release=0
|
||||
Build=0
|
||||
LanguageID=1033
|
||||
CharsetID=1252
|
||||
CompanyName=
|
||||
FileVersion=1.0.0.0
|
||||
FileDescription=Developed using the Dev-C++ IDE
|
||||
InternalName=
|
||||
LegalCopyright=
|
||||
LegalTrademarks=
|
||||
OriginalFilename=
|
||||
ProductName=
|
||||
ProductVersion=1.0.0.0
|
||||
AutoIncBuildNr=0
|
||||
SyncProduct=1
|
||||
|
||||
[Unit1]
|
||||
FileName=main.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit2]
|
||||
FileName=VMachine.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit3]
|
||||
FileName=VMachine.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit4]
|
||||
FileName=MKBasic.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit5]
|
||||
FileName=MKBasic.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit6]
|
||||
FileName=MKCpu.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit7]
|
||||
FileName=MKCpu.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit8]
|
||||
FileName=Memory.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit9]
|
||||
FileName=Memory.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit10]
|
||||
FileName=Display.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit11]
|
||||
FileName=Display.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit12]
|
||||
FileName=MKGenException.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit13]
|
||||
FileName=MKGenException.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Project]
|
||||
FileName=MKBasic.dev
|
||||
Name=MKBasic
|
||||
Type=1
|
||||
Ver=2
|
||||
ObjFiles=
|
||||
Includes=
|
||||
Libs=
|
||||
PrivateResource=
|
||||
ResourceIncludes=
|
||||
MakeIncludes=
|
||||
Compiler=
|
||||
CppCompiler=
|
||||
Linker=
|
||||
IsCpp=1
|
||||
Icon=
|
||||
ExeOutput=
|
||||
ObjectOutput=
|
||||
LogOutput=
|
||||
LogOutputEnabled=0
|
||||
OverrideOutput=0
|
||||
OverrideOutputName=MKBasic.exe
|
||||
HostApplication=
|
||||
UseCustomMakefile=0
|
||||
CustomMakefile=
|
||||
CommandLine=
|
||||
Folders=
|
||||
IncludeVersionInfo=0
|
||||
SupportXPThemes=0
|
||||
CompilerSet=3
|
||||
CompilerSettings=00000001c0111000001000000
|
||||
UnitCount=14
|
||||
|
||||
[VersionInfo]
|
||||
Major=1
|
||||
Minor=0
|
||||
Release=0
|
||||
Build=0
|
||||
LanguageID=1033
|
||||
CharsetID=1252
|
||||
CompanyName=
|
||||
FileVersion=1.0.0.0
|
||||
FileDescription=Developed using the Dev-C++ IDE
|
||||
InternalName=
|
||||
LegalCopyright=
|
||||
LegalTrademarks=
|
||||
OriginalFilename=
|
||||
ProductName=
|
||||
ProductVersion=1.0.0.0
|
||||
AutoIncBuildNr=0
|
||||
SyncProduct=1
|
||||
|
||||
[Unit1]
|
||||
FileName=main.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit2]
|
||||
FileName=VMachine.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit3]
|
||||
FileName=VMachine.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit4]
|
||||
FileName=MKBasic.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit5]
|
||||
FileName=MKBasic.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit6]
|
||||
FileName=MKCpu.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit7]
|
||||
FileName=MKCpu.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit8]
|
||||
FileName=Memory.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit9]
|
||||
FileName=Memory.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit10]
|
||||
FileName=Display.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit11]
|
||||
FileName=Display.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit12]
|
||||
FileName=MKGenException.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit13]
|
||||
FileName=MKGenException.cpp
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
[Unit14]
|
||||
FileName=system.h
|
||||
CompileCpp=1
|
||||
Folder=
|
||||
Compile=1
|
||||
Link=1
|
||||
Priority=1000
|
||||
OverrideBuildCmd=0
|
||||
BuildCmd=
|
||||
|
||||
|
36
MKBasic.h
36
MKBasic.h
@ -1,18 +1,18 @@
|
||||
#ifndef MKBASIC_H
|
||||
#define MKBASIC_H
|
||||
|
||||
#include "VMachine.h"
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
class MKBasic : public VMachine
|
||||
{
|
||||
public:
|
||||
MKBasic();
|
||||
~MKBasic();
|
||||
protected:
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
#ifndef MKBASIC_H
|
||||
#define MKBASIC_H
|
||||
|
||||
#include "VMachine.h"
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
class MKBasic : public VMachine
|
||||
{
|
||||
public:
|
||||
MKBasic();
|
||||
~MKBasic();
|
||||
protected:
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
|
38
MKBasic.layout
Normal file
38
MKBasic.layout
Normal file
@ -0,0 +1,38 @@
|
||||
[Editors]
|
||||
Order=0,7,8,1,2,5,6
|
||||
Focused=0
|
||||
[Editor_0]
|
||||
CursorCol=17
|
||||
CursorRow=470
|
||||
TopLine=424
|
||||
LeftChar=1
|
||||
[Editor_1]
|
||||
CursorCol=33
|
||||
CursorRow=38
|
||||
TopLine=28
|
||||
LeftChar=1
|
||||
[Editor_2]
|
||||
CursorCol=15
|
||||
CursorRow=600
|
||||
TopLine=554
|
||||
LeftChar=1
|
||||
[Editor_5]
|
||||
CursorCol=1
|
||||
CursorRow=1
|
||||
TopLine=260
|
||||
LeftChar=1
|
||||
[Editor_6]
|
||||
CursorCol=17
|
||||
CursorRow=1151
|
||||
TopLine=332
|
||||
LeftChar=1
|
||||
[Editor_7]
|
||||
CursorCol=1
|
||||
CursorRow=1
|
||||
TopLine=25
|
||||
LeftChar=1
|
||||
[Editor_8]
|
||||
CursorCol=1
|
||||
CursorRow=1
|
||||
TopLine=220
|
||||
LeftChar=1
|
886
MKCpu.h
886
MKCpu.h
@ -1,424 +1,462 @@
|
||||
#ifndef MKCPU_H
|
||||
#define MKCPU_H
|
||||
|
||||
#include "Memory.h"
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
struct Regs {
|
||||
unsigned char Acc; // 8-bit accumulator
|
||||
unsigned short Acc16; // 16-bit accumulator
|
||||
unsigned char IndX; // 8-bit index register X
|
||||
unsigned char IndY; // 8-bit index register Y
|
||||
unsigned short Ptr16; // general purpose 16-bit register
|
||||
unsigned short PtrAddr; // cpu code counter - current read/write address
|
||||
unsigned char PtrStack; // 8-bit stack pointer (0-255).
|
||||
unsigned char Flags; // CPU flags
|
||||
bool SoftIrq; // true when interrupted with BRK
|
||||
bool LastRTS; // true if RTS encountered and stack empty.
|
||||
};
|
||||
|
||||
/*
|
||||
* Virtual CPU, 6502 addressing modes:
|
||||
|
||||
+---------------------+--------------------------+
|
||||
| mode | assembler format |
|
||||
+=====================+==========================+
|
||||
| Immediate | #aa |
|
||||
| Absolute | aaaa |
|
||||
| Zero Page | aa | Note:
|
||||
| Implied | |
|
||||
| Indirect Absolute | (aaaa) | aa = 2 hex digits
|
||||
| Absolute Indexed,X | aaaa,X | as $FF
|
||||
| Absolute Indexed,Y | aaaa,Y |
|
||||
| Zero Page Indexed,X | aa,X | aaaa = 4 hex
|
||||
| Zero Page Indexed,Y | aa,Y | digits as
|
||||
| Indexed Indirect | (aa,X) | $FFFF
|
||||
| Indirect Indexed | (aa),Y |
|
||||
| Relative | aaaa | Can also be
|
||||
| Accumulator | A | assembler labels
|
||||
+---------------------+--------------------------+
|
||||
|
||||
Short notation:
|
||||
|
||||
imm = #$00
|
||||
zp = $00
|
||||
zpx = $00,X
|
||||
zpy = $00,Y
|
||||
izx = ($00,X)
|
||||
izy = ($00),Y
|
||||
abs = $0000
|
||||
abx = $0000,X
|
||||
aby = $0000,Y
|
||||
ind = ($0000)
|
||||
rel = $0000 (PC-relative)
|
||||
|
||||
See: 6502AssemblyInOneStep.txt for details.
|
||||
|
||||
*/
|
||||
enum eAddrModes {
|
||||
ADDRMODE_IMM = 0,
|
||||
ADDRMODE_ABS,
|
||||
ADDRMODE_ZP,
|
||||
ADDRMODE_IMP,
|
||||
ADDRMODE_IND,
|
||||
ADDRMODE_ABX,
|
||||
ADDRMODE_ABY,
|
||||
ADDRMODE_ZPX,
|
||||
ADDRMODE_ZPY,
|
||||
ADDRMODE_IZX,
|
||||
ADDRMODE_IZY,
|
||||
ADDRMODE_REL,
|
||||
ADDRMODE_ACC
|
||||
};
|
||||
// assumed little-endian order of bytes (start with least significant)
|
||||
// MEM - memory location from where the value is read/written,
|
||||
// & - reference operator (e.g.: &addr means: value under addr memory location)
|
||||
// PC - program counter (PC+1 means - next memory location after opcode)
|
||||
enum eOpCodes {
|
||||
OPCODE_BRK = 0x00, // software interrupt, no arguments ($00 : BRK)
|
||||
|
||||
/* full compatibility with 65C02 (illegal opcodes not supported, will be used for extended functions */
|
||||
OPCODE_ORA_IZX = 0x01, // bitwise OR with Accumulator, Indexed Indirect ($01 arg : ORA (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_02 = 0x02, // illegal opcode
|
||||
OPCODE_ILL_03 = 0x03, // illegal opcode
|
||||
OPCODE_ILL_04 = 0x04, // illegal opcode
|
||||
OPCODE_ORA_ZP = 0x05, // bitwise OR with Accumulator, Zero Page ($05 arg : ORA arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ASL_ZP = 0x06, // Arithmetic Shift Left, Zero Page ($06 arg : ASL arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_07 = 0x07, // illegal opcode
|
||||
OPCODE_PHP = 0x08, // PusH Processor status on Stack, Implied ($08 : PHP)
|
||||
OPCODE_ORA_IMM = 0x09, // bitwise OR with Accumulator, Immediate ($09 arg : ORA #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_ASL = 0x0A, // Arithmetic Shift Left, Accumulator ($0A : ASL)
|
||||
OPCODE_ILL_0B = 0x0B, // illegal opcode
|
||||
OPCODE_ILL_0C = 0x0C, // illegal opcode
|
||||
OPCODE_ORA_ABS = 0x0D, // bitwise OR with Accumulator, Absolute ($0D addrlo addrhi : ORA addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ASL_ABS = 0x0E, // Arithmetic Shift Left, Absolute ($0E addrlo addrhi : ASL addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_0F = 0x0F, // illegal opcode
|
||||
OPCODE_BPL_REL = 0x10, // Branch on PLus, Relative ($10 signoffs : BPL signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_ORA_IZY = 0x11, // bitwise OR with Accumulator, Indirect Indexed ($11 arg : ORA (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_12 = 0x12, // illegal opcode
|
||||
OPCODE_ILL_13 = 0x13, // illegal opcode
|
||||
OPCODE_ILL_14 = 0x14, // illegal opcode
|
||||
OPCODE_ORA_ZPX = 0x15, // bitwise OR with Accumulator, Zero Page Indexed, X ($15 arg : ORA arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ASL_ZPX = 0x16, // Arithmetic Shift Left, Zero Page Indexed, X ($16 arg : ASL arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_17 = 0x17, // illegal opcode
|
||||
OPCODE_CLC = 0x18, // CLear Carry, Implied ($18 : CLC)
|
||||
OPCODE_ORA_ABY = 0x19, // bitwise OR with Accumulator, Absolute Indexed, Y ($19 addrlo addrhi : ORA addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_1A = 0x1A, // illegal opcode
|
||||
OPCODE_ILL_1B = 0x1B, // illegal opcode
|
||||
OPCODE_ILL_1C = 0x1C, // illegal opcode
|
||||
OPCODE_ORA_ABX = 0x1D, // bitwise OR with Accumulator, Absolute Indexed, X ($1D addrlo addrhi : ORA addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ASL_ABX = 0x1E, // Arithmetic Shift Left, Absolute Indexed, X ($1E addrlo addrhi : ASL addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_1F = 0x1F, // illegal opcode
|
||||
OPCODE_JSR_ABS = 0x20, // Jump to SubRoutine, Absolute ($20 addrlo addrhi : JSR addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_AND_IZX = 0x21, // bitwise AND with accumulator, Indexed Indirect ($21 arg : AND (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_22 = 0x22, // illegal opcode
|
||||
OPCODE_ILL_23 = 0x23, // illegal opcode
|
||||
OPCODE_BIT_ZP = 0x24, // test BITs, Zero Page ($24 arg : BIT arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_AND_ZP = 0x25, // bitwise AND with accumulator, Zero Page ($25 arg : AND arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ROL_ZP = 0x26, // ROtate Left, Zero Page ($26 arg : ROL arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_27 = 0x27, // illegal opcode
|
||||
OPCODE_PLP = 0x28, // PuLl Processor status, Implied ($28 : PLP)
|
||||
OPCODE_AND_IMM = 0x29, // bitwise AND with accumulator, Immediate ($29 arg : AND #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_ROL = 0x2A, // ROtate Left, Accumulator ($2A : ROL)
|
||||
OPCODE_ILL_2B = 0x2B, // illegal opcode
|
||||
OPCODE_BIT_ABS = 0x2C, // test BITs, Absolute ($2C addrlo addrhi : BIT addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_AND_ABS = 0x2D, // bitwise AND with accumulator, Absolute ($2D addrlo addrhi : AND addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ROL_ABS = 0x2E, // ROtate Left, Absolute ($2E addrlo addrhi : ROL addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_2F = 0x2F, // illegal opcode
|
||||
OPCODE_BMI_REL = 0x30, // Branch on MInus, Relative ($30 signoffs : BMI signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_AND_IZY = 0x31, // bitwise AND with accumulator, Indirect Indexed ($31 arg : AND (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_32 = 0x32, // illegal opcode
|
||||
OPCODE_ILL_33 = 0x33, // illegal opcode
|
||||
OPCODE_ILL_34 = 0x34, // illegal opcode
|
||||
OPCODE_AND_ZPX = 0x35, // bitwise AND with accumulator, Zero Page Indexed, X ($35 arg : AND arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ROL_ZPX = 0x36, // ROtate Left, Zero Page Indexed, X ($36 arg : ROL arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_37 = 0x37, // illegal opcode
|
||||
OPCODE_SEC = 0x38, // SEt Carry, Implied ($38 : SEC)
|
||||
OPCODE_AND_ABY = 0x39, // bitwise AND with accumulator, Absolute Indexed, Y ($39 addrlo addrhi : AND addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_3A = 0x3A, // illegal opcode
|
||||
OPCODE_ILL_3B = 0x3B, // illegal opcode
|
||||
OPCODE_ILL_3C = 0x3C, // illegal opcode
|
||||
OPCODE_AND_ABX = 0x3D, // bitwise AND with accumulator, Absolute Indexed, X ($3D addrlo addrhi : AND addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ROL_ABX = 0x3E, // ROtate Left, Absolute Indexed, X ($3E addrlo addrhi : ROL addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_3F = 0x3F, // illegal opcode
|
||||
OPCODE_RTI = 0x40, // ReTurn from Interrupt, Implied ($40 : RTI)
|
||||
OPCODE_EOR_IZX = 0x41, // bitwise Exclusive OR, Indexed Indirect ($41 arg : EOR (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_42 = 0x42, // illegal opcode
|
||||
OPCODE_ILL_43 = 0x43, // illegal opcode
|
||||
OPCODE_ILL_44 = 0x44, // illegal opcode
|
||||
OPCODE_EOR_ZP = 0x45, // bitwise Exclusive OR, Zero Page ($45 arg : EOR arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_LSR_ZP = 0x46, // Logical Shift Right, Zero Page ($46 arg : LSR arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_47 = 0x47, // illegal opcode
|
||||
OPCODE_PHA = 0x48, // PusH Accumulator, Implied ($48 : PHA)
|
||||
OPCODE_EOR_IMM = 0x49, // bitwise Exclusive OR, Immediate ($49 arg : EOR #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_LSR = 0x4A, // Logical Shift Right, Accumulator ($4A : LSR)
|
||||
OPCODE_ILL_4B = 0x4B, // illegal opcode
|
||||
OPCODE_JMP_ABS = 0x4C, // JuMP, Absolute ($4C addrlo addrhi : JMP addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_EOR_ABS = 0x4D, // bitwise Exclusive OR, Absolute ($4D addrlo addrhi : EOR addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_LSR_ABS = 0x4E, // Logical Shift Right, Absolute ($4E addrlo addrhi : LSR addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_4F = 0x4F, // illegal opcode
|
||||
OPCODE_BVC_REL = 0x50, // Branch on oVerflow Clear, Relative ($50 signoffs : BVC signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_EOR_IZY = 0x51, // bitwise Exclusive OR, Indirect Indexed ($51 arg : EOR (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_52 = 0x52, // illegal opcode
|
||||
OPCODE_ILL_53 = 0x53, // illegal opcode
|
||||
OPCODE_ILL_54 = 0x54, // illegal opcode
|
||||
OPCODE_EOR_ZPX = 0x55, // bitwise Exclusive OR, Zero Page Indexed, X ($55 arg : EOR arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_LSR_ZPX = 0x56, // Logical Shift Right, Zero Page Indexed, X ($56 arg : LSR arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_57 = 0x57, // illegal opcode
|
||||
OPCODE_CLI = 0x58, // CLear Interrupt, Implied ($58 : CLI)
|
||||
OPCODE_EOR_ABY = 0x59, // bitwise Exclusive OR, Absolute Indexed, Y ($59 addrlo addrhi : EOR addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_5A = 0x5A, // illegal opcode
|
||||
OPCODE_ILL_5B = 0x5B, // illegal opcode
|
||||
OPCODE_ILL_5C = 0x5C, // illegal opcode
|
||||
OPCODE_EOR_ABX = 0x5D, // bitwise Exclusive OR, Absolute Indexed, X ($5D addrlo addrhi : EOR addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_LSR_ABX = 0x5E, // Logical Shift Right, Absolute Indexed, X ($5E addrlo addrhi : LSR addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_5F = 0x5F, // illegal opcode
|
||||
OPCODE_RTS = 0x60, // ReTurn from Subroutine, Implied ($60 : RTS)
|
||||
OPCODE_ADC_IZX = 0x61, // ADd with Carry, Indexed Indirect ($61 arg : ADC (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_62 = 0x62, // illegal opcode
|
||||
OPCODE_ILL_63 = 0x63, // illegal opcode
|
||||
OPCODE_ILL_64 = 0x64, // illegal opcode
|
||||
OPCODE_ADC_ZP = 0x65, // ADd with Carry, Zero Page ($65 arg : ADC arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ROR_ZP = 0x66, // ROtate Right, Zero Page ($66 arg : ROR arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_67 = 0x67, // illegal opcode
|
||||
OPCODE_PLA = 0x68, // PuLl Accumulator, Implied ($68 : PLA)
|
||||
OPCODE_ADC_IMM = 0x69, // ADd with Carry, Immediate ($69 arg : ADC #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_ROR = 0x6A, // ROtate Right, Accumulator ($6A : ROR)
|
||||
OPCODE_ILL_6B = 0x6B, // illegal opcode
|
||||
OPCODE_JMP_IND = 0x6C, // JuMP, Indirect Absolute ($6C addrlo addrhi : JMP (addr) ;addr=0..FFFF), MEM=&addr
|
||||
OPCODE_ADC_ABS = 0x6D, // ADd with Carry, Absolute ($6D addrlo addrhi : ADC addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ROR_ABS = 0x6E, // ROtate Right, Absolute ($6E addrlo addrhi : ROR addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_6F = 0x6F, // illegal opcode
|
||||
OPCODE_BVS_REL = 0x70, // Branch on oVerflow Set, Relative ($70 signoffs : BVS signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_ADC_IZY = 0x71, // ADd with Carry, Indirect Indexed ($71 arg : ADC (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_72 = 0x72, // illegal opcode
|
||||
OPCODE_ILL_73 = 0x73, // illegal opcode
|
||||
OPCODE_ILL_74 = 0x74, // illegal opcode
|
||||
OPCODE_ADC_ZPX = 0x75, // ADd with Carry, Zero Page Indexed, X ($75 arg : ADC arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ROR_ZPX = 0x76, // ROtate Right, Zero Page Indexed, X ($76 arg : ROR arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_77 = 0x77, // illegal opcode
|
||||
OPCODE_SEI = 0x78, // SEt Interrupt, Implied ($78 : SEI)
|
||||
OPCODE_ADC_ABY = 0x79, // ADd with Carry, Absolute Indexed, Y ($79 addrlo addrhi : ADC addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_7A = 0x7A, // illegal opcode
|
||||
OPCODE_ILL_7B = 0x7B, // illegal opcode
|
||||
OPCODE_ILL_7C = 0x7C, // illegal opcode
|
||||
OPCODE_ADC_ABX = 0x7D, // ADd with Carry, Absolute Indexed, X ($7D addrlo addrhi : ADC addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ROR_ABX = 0x7E, // ROtate Right, Absolute Indexed, X ($7E addrlo addrhi : ROR addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_7F = 0x7F, // illegal opcode
|
||||
OPCODE_ILL_80 = 0x80, // illegal opcode
|
||||
OPCODE_STA_IZX = 0x81, // STore Accumulator, Indexed Indirect ($81 arg : STA (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_82 = 0x82, // illegal opcode
|
||||
OPCODE_ILL_83 = 0x83, // illegal opcode
|
||||
OPCODE_STY_ZP = 0x84, // STore Y register, Zero Page ($84 arg : STY arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_STA_ZP = 0x85, // STore Accumulator, Zero Page ($85 arg : STA arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_STX_ZP = 0x86, // STore X register, Zero Page ($86 arg : STX arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_87 = 0x87, // illegal opcode
|
||||
OPCODE_DEY = 0x88, // DEcrement Y, Implied ($88 : DEY)
|
||||
OPCODE_ILL_89 = 0x89, // illegal opcode
|
||||
OPCODE_TXA = 0x8A, // Transfer X to A, Implied ($8A : TXA)
|
||||
OPCODE_ILL_8B = 0x8B, // illegal opcode
|
||||
OPCODE_STY_ABS = 0x8C, // STore Y register, Absolute ($8C addrlo addrhi : STY addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_STA_ABS = 0x8D, // STore Accumulator, Absolute ($8D addrlo addrhi : STA addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_STX_ABS = 0x8E, // STore X register, Absolute ($8E addrlo addrhi : STX addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_8F = 0x8F, // illegal opcode
|
||||
OPCODE_BCC_REL = 0x90, // Branch on Carry Clear, Relative ($90 signoffs : BCC signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_STA_IZY = 0x91, // STore Accumulator, Indirect Indexed ($91 arg : STA (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_92 = 0x92, // illegal opcode
|
||||
OPCODE_ILL_93 = 0x93, // illegal opcode
|
||||
OPCODE_STY_ZPX = 0x94, // STore Y register, Zero Page Indexed, X ($94 arg : STY arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_STA_ZPX = 0x95, // STore Accumulator, Zero Page Indexed, X ($95 arg : STA arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_STX_ZPY = 0x96, // STore X register, Zero Page Indexed, Y ($96 arg : STX arg,Y ;arg=0..$FF), MEM=arg+Y
|
||||
OPCODE_ILL_97 = 0x97, // illegal opcode
|
||||
OPCODE_TYA = 0x98, // Transfer Y to A, Implied ($98 : TYA)
|
||||
OPCODE_STA_ABY = 0x99, // STore Accumulator, Absolute Indexed, Y ($99 addrlo addrhi : STA addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_TXS = 0x9A, // Transfer X to Stack ptr, Implied ($9A : TXS)
|
||||
OPCODE_ILL_9B = 0x9B, // illegal opcode
|
||||
OPCODE_ILL_9C = 0x9C, // illegal opcode
|
||||
OPCODE_STA_ABX = 0x9D, // STore Accumulator, Absolute Indexed, X ($9D addrlo addrhi : STA addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_9E = 0x9E, // illegal opcode
|
||||
OPCODE_ILL_9F = 0x9F, // illegal opcode
|
||||
OPCODE_LDY_IMM = 0xA0, // LoaD Y register, Immediate ($A0 arg : LDY #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_LDA_IZX = 0xA1, // LoaD Accumulator, Indexed Indirect ($A1 arg : LDA (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_LDX_IMM = 0xA2, // LoaD X register, Immediate ($A2 arg : LDX #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_ILL_A3 = 0xA3, // illegal opcode
|
||||
OPCODE_LDY_ZP = 0xA4, // LoaD Y register, Zero Page ($A4 arg : LDY arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_LDA_ZP = 0xA5, // LoaD Accumulator, Zero Page ($A5 arg : LDA arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_LDX_ZP = 0xA6, // LoaD X register, Zero Page ($A6 arg : LDX arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_A7 = 0xA7, // illegal opcode
|
||||
OPCODE_TAY = 0xA8, // Transfer A to Y, Implied ($A8 : TAY)
|
||||
OPCODE_LDA_IMM = 0xA9, // LoaD Accumulator, Immediate ($A9 arg : LDA #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_TAX = 0xAA, // Transfer A to X, Implied ($AA : TAX)
|
||||
OPCODE_ILL_AB = 0xAB, // illegal opcode
|
||||
OPCODE_LDY_ABS = 0xAC, // LoaD Y register, Absolute ($AC addrlo addrhi : LDY addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_LDA_ABS = 0xAD, // LoaD Accumulator, Absolute ($AD addrlo addrhi : LDA addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_LDX_ABS = 0xAE, // LoaD X register, Absolute ($AE addrlo addrhi : LDX addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_AF = 0xAF, // illegal opcode
|
||||
OPCODE_BCS_REL = 0xB0, // Branch on Carry Set, Relative ($B0 signoffs : BCS signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_LDA_IZY = 0xB1, // LoaD Accumulator, Indirect Indexed ($B1 arg : LDA (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_B2 = 0xB2, // illegal opcode
|
||||
OPCODE_ILL_B3 = 0xB3, // illegal opcode
|
||||
OPCODE_LDY_ZPX = 0xB4, // LoaD Y register, Zero Page Indexed, X ($B4 arg : LDY arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_LDA_ZPX = 0xB5, // LoaD Accumulator, Zero Page Indexed, X ($B5 arg : LDA arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_LDX_ZPY = 0xB6, // LoaD X register, Zero Page Indexed, Y ($B6 arg : LDX arg,Y ;arg=0..$FF), MEM=arg+Y
|
||||
OPCODE_ILL_B7 = 0xB7, // illegal opcode
|
||||
OPCODE_CLV = 0xB8, // CLear oVerflow, Implied ($B8 : CLV)
|
||||
OPCODE_LDA_ABY = 0xB9, // LoaD Accumulator, Absolute Indexed, Y ($B9 addrlo addrhi : LDA addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_TSX = 0xBA, // Transfer Stack ptr to X, Implied ($BA : TSX)
|
||||
OPCODE_ILL_BB = 0xBB, // illegal opcode
|
||||
OPCODE_LDY_ABX = 0xBC, // LoaD Y register, Absolute Indexed, X ($BC addrlo addrhi : LDY addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_LDA_ABX = 0xBD, // LoaD Accumulator, Absolute Indexed, X ($BD addrlo addrhi : LDA addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_LDX_ABY = 0xBE, // LoaD X register, Absolute Indexed, Y ($BE addrlo addrhi : LDX addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_BF = 0xBF, // illegal opcode
|
||||
OPCODE_CPY_IMM = 0xC0, // ComPare Y register, Immediate ($C0 arg : CPY #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_CMP_IZX = 0xC1, // CoMPare accumulator, Indexed Indirect ($A1 arg : LDA (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_C2 = 0xC2, // illegal opcode
|
||||
OPCODE_ILL_C3 = 0xC3, // illegal opcode
|
||||
OPCODE_CPY_ZP = 0xC4, // ComPare Y register, Zero Page ($C4 arg : CPY arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_CMP_ZP = 0xC5, // CoMPare accumulator, Zero Page ($C5 arg : CMP arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_DEC_ZP = 0xC6, // DECrement memory, Zero Page ($C6 arg : DEC arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_C7 = 0xC7, // illegal opcode
|
||||
OPCODE_INY = 0xC8, // INcrement Y, Implied ($C8 : INY)OPCODE_INY = 0xC8, // INcrement Y, Implied ($C8 : INY)
|
||||
OPCODE_CMP_IMM = 0xC9, // CoMPare accumulator, Immediate ($C9 arg : CMP #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_DEX = 0xCA, // DEcrement X, Implied ($CA : DEX)
|
||||
OPCODE_ILL_CB = 0xCB, // illegal opcode
|
||||
OPCODE_CPY_ABS = 0xCC, // ComPare Y register, Absolute ($CC addrlo addrhi : CPY addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_CMP_ABS = 0xCD, // CoMPare accumulator, Absolute ($CD addrlo addrhi : CMP addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_DEC_ABS = 0xCE, // DECrement memory, Absolute ($CE addrlo addrhi : CMP addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_CF = 0xCF, // illegal opcode
|
||||
OPCODE_BNE_REL = 0xD0, // Branch on Not Equal, Relative ($D0 signoffs : BNE signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_CMP_IZY = 0xD1, // CoMPare accumulator, Indirect Indexed ($D1 arg : CMP (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_D2 = 0xD2, // illegal opcode
|
||||
OPCODE_ILL_D3 = 0xD3, // illegal opcode
|
||||
OPCODE_ILL_D4 = 0xD4, // illegal opcode
|
||||
OPCODE_CMP_ZPX = 0xD5, // CoMPare accumulator, Zero Page Indexed, X ($D5 arg : CMP arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_DEC_ZPX = 0xD6, // DECrement memory, Zero Page Indexed, X ($D6 arg : DEC arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_D7 = 0xD7, // illegal opcode
|
||||
OPCODE_CLD = 0xD8, // CLear Decimal, Implied ($D8 : CLD)
|
||||
OPCODE_CMP_ABY = 0xD9, // CoMPare accumulator, Absolute Indexed, Y ($D9 addrlo addrhi : CMP addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_DA = 0xDA, // illegal opcode
|
||||
OPCODE_ILL_DB = 0xDB, // illegal opcode
|
||||
OPCODE_ILL_DC = 0xDC, // illegal opcode
|
||||
OPCODE_CMP_ABX = 0xDD, // CoMPare accumulator, Absolute Indexed, X ($DD addrlo addrhi : CMP addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_DEC_ABX = 0xDE, // DECrement memory, Absolute Indexed, X ($DE addrlo addrhi : DEC addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_DF = 0xDF, // illegal opcode
|
||||
OPCODE_CPX_IMM = 0xE0, // ComPare X register, Immediate ($E0 arg : CPX #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_SBC_IZX = 0xE1, // SuBtract with Carry, Indexed Indirect ($E1 arg : SBC (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_E2 = 0xE2, // illegal opcode
|
||||
OPCODE_ILL_E3 = 0xE3, // illegal opcode
|
||||
OPCODE_CPX_ZP = 0xE4, // ComPare X register, Zero Page ($E4 arg : CPX arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_SBC_ZP = 0xE5, // SuBtract with Carry, Zero Page ($E5 arg : SBC arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_INC_ZP = 0xE6, // INCrement memory, Zero Page ($E6 arg : INC arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_E7 = 0xE7, // illegal opcode
|
||||
OPCODE_INX = 0xE8, // INcrement X, Implied ($E8 : INX)
|
||||
OPCODE_SBC_IMM = 0xE9, // SuBtract with Carry, Immediate ($E9 arg : SBC #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_NOP = 0xEA, // NO oPeration, Implied ($EA : NOP)
|
||||
OPCODE_ILL_EB = 0xEB, // illegal opcode
|
||||
OPCODE_CPX_ABS = 0xEC, // ComPare X register, Absolute ($EC addrlo addrhi : CPX addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_SBC_ABS = 0xED, // SuBtract with Carry, Absolute ($ED addrlo addrhi : SBC addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_INC_ABS = 0xEE, // INCrement memory, Absolute ($EE addrlo addrhi : INC addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_EF = 0xEF, // illegal opcode
|
||||
OPCODE_BEQ_REL = 0xF0, // Branch on EQual, Relative ($F0 signoffs : BEQ signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_SBC_IZY = 0xF1, // SuBtract with Carry, Indirect Indexed ($F1 arg : SBC (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_F2 = 0xF2, // illegal opcode
|
||||
OPCODE_ILL_F3 = 0xF3, // illegal opcode
|
||||
OPCODE_ILL_F4 = 0xF4, // illegal opcode
|
||||
OPCODE_SBC_ZPX = 0xF5, // SuBtract with Carry, Zero Page Indexed, X ($F5 arg : SBC arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_INC_ZPX = 0xF6, // INCrement memory, Zero Page Indexed, X ($F6 arg : INC arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_F7 = 0xF7, // illegal opcode
|
||||
OPCODE_SED = 0xF8, // SEt Decimal, Implied ($F8 : SED)
|
||||
OPCODE_SBC_ABY = 0xF9, // SuBtract with Carry, Absolute Indexed, Y ($F9 addrlo addrhi : SBC addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_FA = 0xFA, // illegal opcode
|
||||
OPCODE_ILL_FB = 0xFB, // illegal opcode
|
||||
OPCODE_ILL_FC = 0xFC, // illegal opcode
|
||||
OPCODE_SBC_ABX = 0xFD, // SuBtract with Carry, Absolute Indexed, X ($FD addrlo addrhi : SBC addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_INC_ABX = 0xFE, // INCrement memory, Absolute Indexed, X ($FE addrlo addrhi : INC addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_FF = 0xFF, // illegal opcode
|
||||
};
|
||||
|
||||
/*
|
||||
*------------------------------------------------------------------------------
|
||||
bit -> 7 0
|
||||
+---+---+---+---+---+---+---+---+
|
||||
| N | V | | B | D | I | Z | C | <-- flag, 0/1 = reset/set
|
||||
+---+---+---+---+---+---+---+---+
|
||||
|
||||
|
||||
N = NEGATIVE. Set if bit 7 of the accumulator is set.
|
||||
|
||||
V = OVERFLOW. Set if the addition of two like-signed numbers or the
|
||||
subtraction of two unlike-signed numbers produces a result
|
||||
greater than +127 or less than -128.
|
||||
|
||||
B = BRK COMMAND. Set if an interrupt caused by a BRK, reset if
|
||||
caused by an external interrupt.
|
||||
|
||||
D = DECIMAL MODE. Set if decimal mode active.
|
||||
|
||||
I = IRQ DISABLE. Set if maskable interrupts are disabled.
|
||||
|
||||
Z = ZERO. Set if the result of the last operation (load/inc/dec/
|
||||
add/sub) was zero.
|
||||
|
||||
C = CARRY. Set if the add produced a carry, or if the subtraction
|
||||
produced a borrow. Also holds bits after a logical shift.
|
||||
*------------------------------------------------------------------------------
|
||||
*/
|
||||
enum eCpuFlagMasks {
|
||||
FLAGS_CARRY = 0x01, // 0: C
|
||||
FLAGS_ZERO = 0x02, // 1: Z
|
||||
FLAGS_IRQ = 0x04, // 2: I
|
||||
FLAGS_DEC = 0x08, // 3: D
|
||||
FLAGS_BRK = 0x10, // 4: B (Clear if interrupt vectoring, set if BRK or PHP)
|
||||
FLAGS_UNUSED = 0x20, // 5: Unused flag (always set).
|
||||
FLAGS_OVERFLOW = 0x40, // 6: V
|
||||
FLAGS_SIGN = 0x80 // 7: N
|
||||
};
|
||||
|
||||
enum eLogicOps {
|
||||
LOGOP_OR,
|
||||
LOGOP_AND,
|
||||
LOGOP_EOR
|
||||
};
|
||||
|
||||
class MKCpu
|
||||
{
|
||||
public:
|
||||
|
||||
MKCpu();
|
||||
MKCpu(Memory *pmem);
|
||||
~MKCpu();
|
||||
|
||||
Regs *ExecOpcode(unsigned short memaddr);
|
||||
Regs *GetRegs();
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
struct Regs mReg; // CPU registers
|
||||
Memory *mpMem; // pointer to memory object
|
||||
bool mLocalMem; // true - memory locally allocated
|
||||
|
||||
void InitCpu();
|
||||
void SetFlags(unsigned char reg); // set CPU flags ZERO and SIGN based on Acc, X or Y
|
||||
unsigned char ShiftLeft(unsigned char arg8); // Arithmetic Shift Left, set Carry flag
|
||||
unsigned char ShiftRight(unsigned char arg8); // Logical Shift Right, update flags NZC.
|
||||
unsigned char RotateLeft(unsigned char arg8); // Rotate left, Carry to bit 0, bit 7 to Carry, update flags N and Z.
|
||||
unsigned char RotateRight(unsigned char arg8); // Rotate left, Carry to bit 7, bit 0 to Carry, update flags N and Z.
|
||||
unsigned short GetArg16(unsigned char offs); // Get 2-byte argument, add offset, increase PC.
|
||||
void LogicOpAcc(unsigned short addr, int logop); // Perform logical bitwise operation between memory location and Acc.
|
||||
// Result in Acc. Set flags.
|
||||
unsigned short ComputeRelJump(unsigned char offs); // Compute new PC based on relative offset.
|
||||
unsigned char Conv2Bcd(unsigned short v); // Convert number to BCD representation.
|
||||
unsigned short Bcd2Num(unsigned char v); // Convert BCD code to number.
|
||||
bool CheckFlag(unsigned char flag); // Return true if given CPU status flag is set, false otherwise.
|
||||
void SetFlag(bool set, unsigned char flag); // Set or unset processor status flag.
|
||||
unsigned char AddWithCarry(unsigned char mem8); // Add With Carry, update flags and Acc.
|
||||
unsigned char SubWithCarry(unsigned char mem8); // Subtract With Carry, update flags and Acc.
|
||||
unsigned short GetAddrWithMode(int mode); // Get address of the byte argument with specified addr. mode
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
#ifndef MKCPU_H
|
||||
#define MKCPU_H
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <queue>
|
||||
#include "system.h"
|
||||
#include "Memory.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
#define DISS_BUF_SIZE 60 // disassembled instruction buffer size
|
||||
|
||||
struct Regs {
|
||||
unsigned char Acc; // 8-bit accumulator
|
||||
unsigned short Acc16; // 16-bit accumulator
|
||||
unsigned char IndX; // 8-bit index register X
|
||||
unsigned char IndY; // 8-bit index register Y
|
||||
unsigned short Ptr16; // general purpose 16-bit register
|
||||
unsigned short PtrAddr; // cpu code counter (PC) - current read/write address
|
||||
unsigned char PtrStack; // 8-bit stack pointer (0-255).
|
||||
unsigned char Flags; // CPU flags
|
||||
bool SoftIrq; // true when interrupted with BRK or trapped opcode
|
||||
bool LastRTS; // true if RTS encountered and stack empty.
|
||||
unsigned short LastAddr; // PC at the time of previous op-code
|
||||
string LastInstr; // instruction and argument executed in previous step
|
||||
int LastOpCode; // op-code of last instruction
|
||||
unsigned short LastArg; // argument to the last instruction
|
||||
int LastAddrMode; // addressing mode of last instruction
|
||||
};
|
||||
|
||||
/*
|
||||
* Virtual CPU, 6502 addressing modes:
|
||||
|
||||
+---------------------+--------------------------+
|
||||
| mode | assembler format |
|
||||
+=====================+==========================+
|
||||
| Immediate | #aa |
|
||||
| Absolute | aaaa |
|
||||
| Zero Page | aa | Note:
|
||||
| Implied | |
|
||||
| Indirect Absolute | (aaaa) | aa = 2 hex digits
|
||||
| Absolute Indexed,X | aaaa,X | as $FF
|
||||
| Absolute Indexed,Y | aaaa,Y |
|
||||
| Zero Page Indexed,X | aa,X | aaaa = 4 hex
|
||||
| Zero Page Indexed,Y | aa,Y | digits as
|
||||
| Indexed Indirect | (aa,X) | $FFFF
|
||||
| Indirect Indexed | (aa),Y |
|
||||
| Relative | aaaa | Can also be
|
||||
| Accumulator | A | assembler labels
|
||||
+---------------------+--------------------------+
|
||||
|
||||
Short notation:
|
||||
|
||||
imm = #$00
|
||||
zp = $00
|
||||
zpx = $00,X
|
||||
zpy = $00,Y
|
||||
izx = ($00,X)
|
||||
izy = ($00),Y
|
||||
abs = $0000
|
||||
abx = $0000,X
|
||||
aby = $0000,Y
|
||||
ind = ($0000)
|
||||
rel = $0000 (PC-relative)
|
||||
|
||||
See: 6502AssemblyInOneStep.txt for details.
|
||||
|
||||
*/
|
||||
enum eAddrModes {
|
||||
ADDRMODE_IMM = 0,
|
||||
ADDRMODE_ABS,
|
||||
ADDRMODE_ZP,
|
||||
ADDRMODE_IMP,
|
||||
ADDRMODE_IND,
|
||||
ADDRMODE_ABX,
|
||||
ADDRMODE_ABY,
|
||||
ADDRMODE_ZPX,
|
||||
ADDRMODE_ZPY,
|
||||
ADDRMODE_IZX,
|
||||
ADDRMODE_IZY,
|
||||
ADDRMODE_REL,
|
||||
ADDRMODE_ACC,
|
||||
ADDRMODE_UND, // undetermined (for some illegal codes)
|
||||
ADDRMODE_LENGTH // should be always last
|
||||
};
|
||||
// assumed little-endian order of bytes (start with least significant)
|
||||
// MEM - memory location from where the value is read/written,
|
||||
// & - reference operator (e.g.: &addr means: value under addr memory location)
|
||||
// PC - program counter (PC+1 means - next memory location after opcode)
|
||||
enum eOpCodes {
|
||||
OPCODE_BRK = 0x00, // software interrupt, no arguments ($00 : BRK)
|
||||
|
||||
/* full compatibility with 65C02 (illegal opcodes not supported, will be used for extended functions */
|
||||
OPCODE_ORA_IZX = 0x01, // bitwise OR with Accumulator, Indexed Indirect ($01 arg : ORA (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_02 = 0x02, // illegal opcode
|
||||
OPCODE_ILL_03 = 0x03, // illegal opcode
|
||||
OPCODE_ILL_04 = 0x04, // illegal opcode
|
||||
OPCODE_ORA_ZP = 0x05, // bitwise OR with Accumulator, Zero Page ($05 arg : ORA arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ASL_ZP = 0x06, // Arithmetic Shift Left, Zero Page ($06 arg : ASL arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_07 = 0x07, // illegal opcode
|
||||
OPCODE_PHP = 0x08, // PusH Processor status on Stack, Implied ($08 : PHP)
|
||||
OPCODE_ORA_IMM = 0x09, // bitwise OR with Accumulator, Immediate ($09 arg : ORA #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_ASL = 0x0A, // Arithmetic Shift Left, Accumulator ($0A : ASL)
|
||||
OPCODE_ILL_0B = 0x0B, // illegal opcode
|
||||
OPCODE_ILL_0C = 0x0C, // illegal opcode
|
||||
OPCODE_ORA_ABS = 0x0D, // bitwise OR with Accumulator, Absolute ($0D addrlo addrhi : ORA addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ASL_ABS = 0x0E, // Arithmetic Shift Left, Absolute ($0E addrlo addrhi : ASL addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_0F = 0x0F, // illegal opcode
|
||||
OPCODE_BPL_REL = 0x10, // Branch on PLus, Relative ($10 signoffs : BPL signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_ORA_IZY = 0x11, // bitwise OR with Accumulator, Indirect Indexed ($11 arg : ORA (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_12 = 0x12, // illegal opcode
|
||||
OPCODE_ILL_13 = 0x13, // illegal opcode
|
||||
OPCODE_ILL_14 = 0x14, // illegal opcode
|
||||
OPCODE_ORA_ZPX = 0x15, // bitwise OR with Accumulator, Zero Page Indexed, X ($15 arg : ORA arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ASL_ZPX = 0x16, // Arithmetic Shift Left, Zero Page Indexed, X ($16 arg : ASL arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_17 = 0x17, // illegal opcode
|
||||
OPCODE_CLC = 0x18, // CLear Carry, Implied ($18 : CLC)
|
||||
OPCODE_ORA_ABY = 0x19, // bitwise OR with Accumulator, Absolute Indexed, Y ($19 addrlo addrhi : ORA addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_1A = 0x1A, // illegal opcode
|
||||
OPCODE_ILL_1B = 0x1B, // illegal opcode
|
||||
OPCODE_ILL_1C = 0x1C, // illegal opcode
|
||||
OPCODE_ORA_ABX = 0x1D, // bitwise OR with Accumulator, Absolute Indexed, X ($1D addrlo addrhi : ORA addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ASL_ABX = 0x1E, // Arithmetic Shift Left, Absolute Indexed, X ($1E addrlo addrhi : ASL addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_1F = 0x1F, // illegal opcode
|
||||
OPCODE_JSR_ABS = 0x20, // Jump to SubRoutine, Absolute ($20 addrlo addrhi : JSR addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_AND_IZX = 0x21, // bitwise AND with accumulator, Indexed Indirect ($21 arg : AND (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_22 = 0x22, // illegal opcode
|
||||
OPCODE_ILL_23 = 0x23, // illegal opcode
|
||||
OPCODE_BIT_ZP = 0x24, // test BITs, Zero Page ($24 arg : BIT arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_AND_ZP = 0x25, // bitwise AND with accumulator, Zero Page ($25 arg : AND arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ROL_ZP = 0x26, // ROtate Left, Zero Page ($26 arg : ROL arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_27 = 0x27, // illegal opcode
|
||||
OPCODE_PLP = 0x28, // PuLl Processor status, Implied ($28 : PLP)
|
||||
OPCODE_AND_IMM = 0x29, // bitwise AND with accumulator, Immediate ($29 arg : AND #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_ROL = 0x2A, // ROtate Left, Accumulator ($2A : ROL)
|
||||
OPCODE_ILL_2B = 0x2B, // illegal opcode
|
||||
OPCODE_BIT_ABS = 0x2C, // test BITs, Absolute ($2C addrlo addrhi : BIT addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_AND_ABS = 0x2D, // bitwise AND with accumulator, Absolute ($2D addrlo addrhi : AND addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ROL_ABS = 0x2E, // ROtate Left, Absolute ($2E addrlo addrhi : ROL addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_2F = 0x2F, // illegal opcode
|
||||
OPCODE_BMI_REL = 0x30, // Branch on MInus, Relative ($30 signoffs : BMI signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_AND_IZY = 0x31, // bitwise AND with accumulator, Indirect Indexed ($31 arg : AND (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_32 = 0x32, // illegal opcode
|
||||
OPCODE_ILL_33 = 0x33, // illegal opcode
|
||||
OPCODE_ILL_34 = 0x34, // illegal opcode
|
||||
OPCODE_AND_ZPX = 0x35, // bitwise AND with accumulator, Zero Page Indexed, X ($35 arg : AND arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ROL_ZPX = 0x36, // ROtate Left, Zero Page Indexed, X ($36 arg : ROL arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_37 = 0x37, // illegal opcode
|
||||
OPCODE_SEC = 0x38, // SEt Carry, Implied ($38 : SEC)
|
||||
OPCODE_AND_ABY = 0x39, // bitwise AND with accumulator, Absolute Indexed, Y ($39 addrlo addrhi : AND addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_3A = 0x3A, // illegal opcode
|
||||
OPCODE_ILL_3B = 0x3B, // illegal opcode
|
||||
OPCODE_ILL_3C = 0x3C, // illegal opcode
|
||||
OPCODE_AND_ABX = 0x3D, // bitwise AND with accumulator, Absolute Indexed, X ($3D addrlo addrhi : AND addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ROL_ABX = 0x3E, // ROtate Left, Absolute Indexed, X ($3E addrlo addrhi : ROL addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_3F = 0x3F, // illegal opcode
|
||||
OPCODE_RTI = 0x40, // ReTurn from Interrupt, Implied ($40 : RTI)
|
||||
OPCODE_EOR_IZX = 0x41, // bitwise Exclusive OR, Indexed Indirect ($41 arg : EOR (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_42 = 0x42, // illegal opcode
|
||||
OPCODE_ILL_43 = 0x43, // illegal opcode
|
||||
OPCODE_ILL_44 = 0x44, // illegal opcode
|
||||
OPCODE_EOR_ZP = 0x45, // bitwise Exclusive OR, Zero Page ($45 arg : EOR arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_LSR_ZP = 0x46, // Logical Shift Right, Zero Page ($46 arg : LSR arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_47 = 0x47, // illegal opcode
|
||||
OPCODE_PHA = 0x48, // PusH Accumulator, Implied ($48 : PHA)
|
||||
OPCODE_EOR_IMM = 0x49, // bitwise Exclusive OR, Immediate ($49 arg : EOR #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_LSR = 0x4A, // Logical Shift Right, Accumulator ($4A : LSR)
|
||||
OPCODE_ILL_4B = 0x4B, // illegal opcode
|
||||
OPCODE_JMP_ABS = 0x4C, // JuMP, Absolute ($4C addrlo addrhi : JMP addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_EOR_ABS = 0x4D, // bitwise Exclusive OR, Absolute ($4D addrlo addrhi : EOR addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_LSR_ABS = 0x4E, // Logical Shift Right, Absolute ($4E addrlo addrhi : LSR addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_4F = 0x4F, // illegal opcode
|
||||
OPCODE_BVC_REL = 0x50, // Branch on oVerflow Clear, Relative ($50 signoffs : BVC signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_EOR_IZY = 0x51, // bitwise Exclusive OR, Indirect Indexed ($51 arg : EOR (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_52 = 0x52, // illegal opcode
|
||||
OPCODE_ILL_53 = 0x53, // illegal opcode
|
||||
OPCODE_ILL_54 = 0x54, // illegal opcode
|
||||
OPCODE_EOR_ZPX = 0x55, // bitwise Exclusive OR, Zero Page Indexed, X ($55 arg : EOR arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_LSR_ZPX = 0x56, // Logical Shift Right, Zero Page Indexed, X ($56 arg : LSR arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_57 = 0x57, // illegal opcode
|
||||
OPCODE_CLI = 0x58, // CLear Interrupt, Implied ($58 : CLI)
|
||||
OPCODE_EOR_ABY = 0x59, // bitwise Exclusive OR, Absolute Indexed, Y ($59 addrlo addrhi : EOR addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_5A = 0x5A, // illegal opcode
|
||||
OPCODE_ILL_5B = 0x5B, // illegal opcode
|
||||
OPCODE_ILL_5C = 0x5C, // illegal opcode
|
||||
OPCODE_EOR_ABX = 0x5D, // bitwise Exclusive OR, Absolute Indexed, X ($5D addrlo addrhi : EOR addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_LSR_ABX = 0x5E, // Logical Shift Right, Absolute Indexed, X ($5E addrlo addrhi : LSR addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_5F = 0x5F, // illegal opcode
|
||||
OPCODE_RTS = 0x60, // ReTurn from Subroutine, Implied ($60 : RTS)
|
||||
OPCODE_ADC_IZX = 0x61, // ADd with Carry, Indexed Indirect ($61 arg : ADC (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_62 = 0x62, // illegal opcode
|
||||
OPCODE_ILL_63 = 0x63, // illegal opcode
|
||||
OPCODE_ILL_64 = 0x64, // illegal opcode
|
||||
OPCODE_ADC_ZP = 0x65, // ADd with Carry, Zero Page ($65 arg : ADC arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ROR_ZP = 0x66, // ROtate Right, Zero Page ($66 arg : ROR arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_67 = 0x67, // illegal opcode
|
||||
OPCODE_PLA = 0x68, // PuLl Accumulator, Implied ($68 : PLA)
|
||||
OPCODE_ADC_IMM = 0x69, // ADd with Carry, Immediate ($69 arg : ADC #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_ROR = 0x6A, // ROtate Right, Accumulator ($6A : ROR)
|
||||
OPCODE_ILL_6B = 0x6B, // illegal opcode
|
||||
OPCODE_JMP_IND = 0x6C, // JuMP, Indirect Absolute ($6C addrlo addrhi : JMP (addr) ;addr=0..FFFF), MEM=&addr
|
||||
OPCODE_ADC_ABS = 0x6D, // ADd with Carry, Absolute ($6D addrlo addrhi : ADC addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ROR_ABS = 0x6E, // ROtate Right, Absolute ($6E addrlo addrhi : ROR addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_6F = 0x6F, // illegal opcode
|
||||
OPCODE_BVS_REL = 0x70, // Branch on oVerflow Set, Relative ($70 signoffs : BVS signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_ADC_IZY = 0x71, // ADd with Carry, Indirect Indexed ($71 arg : ADC (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_72 = 0x72, // illegal opcode
|
||||
OPCODE_ILL_73 = 0x73, // illegal opcode
|
||||
OPCODE_ILL_74 = 0x74, // illegal opcode
|
||||
OPCODE_ADC_ZPX = 0x75, // ADd with Carry, Zero Page Indexed, X ($75 arg : ADC arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ROR_ZPX = 0x76, // ROtate Right, Zero Page Indexed, X ($76 arg : ROR arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_77 = 0x77, // illegal opcode
|
||||
OPCODE_SEI = 0x78, // SEt Interrupt, Implied ($78 : SEI)
|
||||
OPCODE_ADC_ABY = 0x79, // ADd with Carry, Absolute Indexed, Y ($79 addrlo addrhi : ADC addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_7A = 0x7A, // illegal opcode
|
||||
OPCODE_ILL_7B = 0x7B, // illegal opcode
|
||||
OPCODE_ILL_7C = 0x7C, // illegal opcode
|
||||
OPCODE_ADC_ABX = 0x7D, // ADd with Carry, Absolute Indexed, X ($7D addrlo addrhi : ADC addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ROR_ABX = 0x7E, // ROtate Right, Absolute Indexed, X ($7E addrlo addrhi : ROR addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_7F = 0x7F, // illegal opcode
|
||||
OPCODE_ILL_80 = 0x80, // illegal opcode
|
||||
OPCODE_STA_IZX = 0x81, // STore Accumulator, Indexed Indirect ($81 arg : STA (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_82 = 0x82, // illegal opcode
|
||||
OPCODE_ILL_83 = 0x83, // illegal opcode
|
||||
OPCODE_STY_ZP = 0x84, // STore Y register, Zero Page ($84 arg : STY arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_STA_ZP = 0x85, // STore Accumulator, Zero Page ($85 arg : STA arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_STX_ZP = 0x86, // STore X register, Zero Page ($86 arg : STX arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_87 = 0x87, // illegal opcode
|
||||
OPCODE_DEY = 0x88, // DEcrement Y, Implied ($88 : DEY)
|
||||
OPCODE_ILL_89 = 0x89, // illegal opcode
|
||||
OPCODE_TXA = 0x8A, // Transfer X to A, Implied ($8A : TXA)
|
||||
OPCODE_ILL_8B = 0x8B, // illegal opcode
|
||||
OPCODE_STY_ABS = 0x8C, // STore Y register, Absolute ($8C addrlo addrhi : STY addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_STA_ABS = 0x8D, // STore Accumulator, Absolute ($8D addrlo addrhi : STA addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_STX_ABS = 0x8E, // STore X register, Absolute ($8E addrlo addrhi : STX addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_8F = 0x8F, // illegal opcode
|
||||
OPCODE_BCC_REL = 0x90, // Branch on Carry Clear, Relative ($90 signoffs : BCC signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_STA_IZY = 0x91, // STore Accumulator, Indirect Indexed ($91 arg : STA (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_92 = 0x92, // illegal opcode
|
||||
OPCODE_ILL_93 = 0x93, // illegal opcode
|
||||
OPCODE_STY_ZPX = 0x94, // STore Y register, Zero Page Indexed, X ($94 arg : STY arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_STA_ZPX = 0x95, // STore Accumulator, Zero Page Indexed, X ($95 arg : STA arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_STX_ZPY = 0x96, // STore X register, Zero Page Indexed, Y ($96 arg : STX arg,Y ;arg=0..$FF), MEM=arg+Y
|
||||
OPCODE_ILL_97 = 0x97, // illegal opcode
|
||||
OPCODE_TYA = 0x98, // Transfer Y to A, Implied ($98 : TYA)
|
||||
OPCODE_STA_ABY = 0x99, // STore Accumulator, Absolute Indexed, Y ($99 addrlo addrhi : STA addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_TXS = 0x9A, // Transfer X to Stack ptr, Implied ($9A : TXS)
|
||||
OPCODE_ILL_9B = 0x9B, // illegal opcode
|
||||
OPCODE_ILL_9C = 0x9C, // illegal opcode
|
||||
OPCODE_STA_ABX = 0x9D, // STore Accumulator, Absolute Indexed, X ($9D addrlo addrhi : STA addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_9E = 0x9E, // illegal opcode
|
||||
OPCODE_ILL_9F = 0x9F, // illegal opcode
|
||||
OPCODE_LDY_IMM = 0xA0, // LoaD Y register, Immediate ($A0 arg : LDY #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_LDA_IZX = 0xA1, // LoaD Accumulator, Indexed Indirect ($A1 arg : LDA (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_LDX_IMM = 0xA2, // LoaD X register, Immediate ($A2 arg : LDX #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_ILL_A3 = 0xA3, // illegal opcode
|
||||
OPCODE_LDY_ZP = 0xA4, // LoaD Y register, Zero Page ($A4 arg : LDY arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_LDA_ZP = 0xA5, // LoaD Accumulator, Zero Page ($A5 arg : LDA arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_LDX_ZP = 0xA6, // LoaD X register, Zero Page ($A6 arg : LDX arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_A7 = 0xA7, // illegal opcode
|
||||
OPCODE_TAY = 0xA8, // Transfer A to Y, Implied ($A8 : TAY)
|
||||
OPCODE_LDA_IMM = 0xA9, // LoaD Accumulator, Immediate ($A9 arg : LDA #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_TAX = 0xAA, // Transfer A to X, Implied ($AA : TAX)
|
||||
OPCODE_ILL_AB = 0xAB, // illegal opcode
|
||||
OPCODE_LDY_ABS = 0xAC, // LoaD Y register, Absolute ($AC addrlo addrhi : LDY addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_LDA_ABS = 0xAD, // LoaD Accumulator, Absolute ($AD addrlo addrhi : LDA addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_LDX_ABS = 0xAE, // LoaD X register, Absolute ($AE addrlo addrhi : LDX addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_AF = 0xAF, // illegal opcode
|
||||
OPCODE_BCS_REL = 0xB0, // Branch on Carry Set, Relative ($B0 signoffs : BCS signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_LDA_IZY = 0xB1, // LoaD Accumulator, Indirect Indexed ($B1 arg : LDA (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_B2 = 0xB2, // illegal opcode
|
||||
OPCODE_ILL_B3 = 0xB3, // illegal opcode
|
||||
OPCODE_LDY_ZPX = 0xB4, // LoaD Y register, Zero Page Indexed, X ($B4 arg : LDY arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_LDA_ZPX = 0xB5, // LoaD Accumulator, Zero Page Indexed, X ($B5 arg : LDA arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_LDX_ZPY = 0xB6, // LoaD X register, Zero Page Indexed, Y ($B6 arg : LDX arg,Y ;arg=0..$FF), MEM=arg+Y
|
||||
OPCODE_ILL_B7 = 0xB7, // illegal opcode
|
||||
OPCODE_CLV = 0xB8, // CLear oVerflow, Implied ($B8 : CLV)
|
||||
OPCODE_LDA_ABY = 0xB9, // LoaD Accumulator, Absolute Indexed, Y ($B9 addrlo addrhi : LDA addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_TSX = 0xBA, // Transfer Stack ptr to X, Implied ($BA : TSX)
|
||||
OPCODE_ILL_BB = 0xBB, // illegal opcode
|
||||
OPCODE_LDY_ABX = 0xBC, // LoaD Y register, Absolute Indexed, X ($BC addrlo addrhi : LDY addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_LDA_ABX = 0xBD, // LoaD Accumulator, Absolute Indexed, X ($BD addrlo addrhi : LDA addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_LDX_ABY = 0xBE, // LoaD X register, Absolute Indexed, Y ($BE addrlo addrhi : LDX addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_BF = 0xBF, // illegal opcode
|
||||
OPCODE_CPY_IMM = 0xC0, // ComPare Y register, Immediate ($C0 arg : CPY #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_CMP_IZX = 0xC1, // CoMPare accumulator, Indexed Indirect ($A1 arg : LDA (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_C2 = 0xC2, // illegal opcode
|
||||
OPCODE_ILL_C3 = 0xC3, // illegal opcode
|
||||
OPCODE_CPY_ZP = 0xC4, // ComPare Y register, Zero Page ($C4 arg : CPY arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_CMP_ZP = 0xC5, // CoMPare accumulator, Zero Page ($C5 arg : CMP arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_DEC_ZP = 0xC6, // DECrement memory, Zero Page ($C6 arg : DEC arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_C7 = 0xC7, // illegal opcode
|
||||
OPCODE_INY = 0xC8, // INcrement Y, Implied ($C8 : INY)OPCODE_INY = 0xC8, // INcrement Y, Implied ($C8 : INY)
|
||||
OPCODE_CMP_IMM = 0xC9, // CoMPare accumulator, Immediate ($C9 arg : CMP #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_DEX = 0xCA, // DEcrement X, Implied ($CA : DEX)
|
||||
OPCODE_ILL_CB = 0xCB, // illegal opcode
|
||||
OPCODE_CPY_ABS = 0xCC, // ComPare Y register, Absolute ($CC addrlo addrhi : CPY addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_CMP_ABS = 0xCD, // CoMPare accumulator, Absolute ($CD addrlo addrhi : CMP addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_DEC_ABS = 0xCE, // DECrement memory, Absolute ($CE addrlo addrhi : CMP addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_CF = 0xCF, // illegal opcode
|
||||
OPCODE_BNE_REL = 0xD0, // Branch on Not Equal, Relative ($D0 signoffs : BNE signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_CMP_IZY = 0xD1, // CoMPare accumulator, Indirect Indexed ($D1 arg : CMP (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_D2 = 0xD2, // illegal opcode
|
||||
OPCODE_ILL_D3 = 0xD3, // illegal opcode
|
||||
OPCODE_ILL_D4 = 0xD4, // illegal opcode
|
||||
OPCODE_CMP_ZPX = 0xD5, // CoMPare accumulator, Zero Page Indexed, X ($D5 arg : CMP arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_DEC_ZPX = 0xD6, // DECrement memory, Zero Page Indexed, X ($D6 arg : DEC arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_D7 = 0xD7, // illegal opcode
|
||||
OPCODE_CLD = 0xD8, // CLear Decimal, Implied ($D8 : CLD)
|
||||
OPCODE_CMP_ABY = 0xD9, // CoMPare accumulator, Absolute Indexed, Y ($D9 addrlo addrhi : CMP addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_DA = 0xDA, // illegal opcode
|
||||
OPCODE_ILL_DB = 0xDB, // illegal opcode
|
||||
OPCODE_ILL_DC = 0xDC, // illegal opcode
|
||||
OPCODE_CMP_ABX = 0xDD, // CoMPare accumulator, Absolute Indexed, X ($DD addrlo addrhi : CMP addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_DEC_ABX = 0xDE, // DECrement memory, Absolute Indexed, X ($DE addrlo addrhi : DEC addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_DF = 0xDF, // illegal opcode
|
||||
OPCODE_CPX_IMM = 0xE0, // ComPare X register, Immediate ($E0 arg : CPX #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_SBC_IZX = 0xE1, // SuBtract with Carry, Indexed Indirect ($E1 arg : SBC (arg,X) ;arg=0..$FF), MEM=&(arg+X)
|
||||
OPCODE_ILL_E2 = 0xE2, // illegal opcode
|
||||
OPCODE_ILL_E3 = 0xE3, // illegal opcode
|
||||
OPCODE_CPX_ZP = 0xE4, // ComPare X register, Zero Page ($E4 arg : CPX arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_SBC_ZP = 0xE5, // SuBtract with Carry, Zero Page ($E5 arg : SBC arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_INC_ZP = 0xE6, // INCrement memory, Zero Page ($E6 arg : INC arg ;arg=0..$FF), MEM=arg
|
||||
OPCODE_ILL_E7 = 0xE7, // illegal opcode
|
||||
OPCODE_INX = 0xE8, // INcrement X, Implied ($E8 : INX)
|
||||
OPCODE_SBC_IMM = 0xE9, // SuBtract with Carry, Immediate ($E9 arg : SBC #arg ;arg=0..$FF), MEM=PC+1
|
||||
OPCODE_NOP = 0xEA, // NO oPeration, Implied ($EA : NOP)
|
||||
OPCODE_ILL_EB = 0xEB, // illegal opcode
|
||||
OPCODE_CPX_ABS = 0xEC, // ComPare X register, Absolute ($EC addrlo addrhi : CPX addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_SBC_ABS = 0xED, // SuBtract with Carry, Absolute ($ED addrlo addrhi : SBC addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_INC_ABS = 0xEE, // INCrement memory, Absolute ($EE addrlo addrhi : INC addr ;addr=0..$FFFF), MEM=addr
|
||||
OPCODE_ILL_EF = 0xEF, // illegal opcode
|
||||
OPCODE_BEQ_REL = 0xF0, // Branch on EQual, Relative ($F0 signoffs : BEQ signoffs ;signoffs=0..$FF [-128 ($80)..127 ($7F)])
|
||||
OPCODE_SBC_IZY = 0xF1, // SuBtract with Carry, Indirect Indexed ($F1 arg : SBC (arg),Y ;arg=0..$FF), MEM=&arg+Y
|
||||
OPCODE_ILL_F2 = 0xF2, // illegal opcode
|
||||
OPCODE_ILL_F3 = 0xF3, // illegal opcode
|
||||
OPCODE_ILL_F4 = 0xF4, // illegal opcode
|
||||
OPCODE_SBC_ZPX = 0xF5, // SuBtract with Carry, Zero Page Indexed, X ($F5 arg : SBC arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_INC_ZPX = 0xF6, // INCrement memory, Zero Page Indexed, X ($F6 arg : INC arg,X ;arg=0..$FF), MEM=arg+X
|
||||
OPCODE_ILL_F7 = 0xF7, // illegal opcode
|
||||
OPCODE_SED = 0xF8, // SEt Decimal, Implied ($F8 : SED)
|
||||
OPCODE_SBC_ABY = 0xF9, // SuBtract with Carry, Absolute Indexed, Y ($F9 addrlo addrhi : SBC addr,Y ;addr=0..$FFFF), MEM=addr+Y
|
||||
OPCODE_ILL_FA = 0xFA, // illegal opcode
|
||||
OPCODE_ILL_FB = 0xFB, // illegal opcode
|
||||
OPCODE_ILL_FC = 0xFC, // illegal opcode
|
||||
OPCODE_SBC_ABX = 0xFD, // SuBtract with Carry, Absolute Indexed, X ($FD addrlo addrhi : SBC addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_INC_ABX = 0xFE, // INCrement memory, Absolute Indexed, X ($FE addrlo addrhi : INC addr,X ;addr=0..$FFFF), MEM=addr+X
|
||||
OPCODE_ILL_FF = 0xFF // illegal opcode
|
||||
};
|
||||
|
||||
struct OpCode {
|
||||
int code; // the byte value of the opcode
|
||||
int addrmode; // addressing mode (see eAddrModes)
|
||||
int time; // # of cycles
|
||||
string amf; // assembler mnemonic
|
||||
};
|
||||
|
||||
typedef map<eOpCodes,OpCode> OpCodesMap;
|
||||
|
||||
/*
|
||||
*------------------------------------------------------------------------------
|
||||
bit -> 7 0
|
||||
+---+---+---+---+---+---+---+---+
|
||||
| N | V | | B | D | I | Z | C | <-- flag, 0/1 = reset/set
|
||||
+---+---+---+---+---+---+---+---+
|
||||
|
||||
|
||||
N = NEGATIVE. Set if bit 7 of the accumulator is set.
|
||||
|
||||
V = OVERFLOW. Set if the addition of two like-signed numbers or the
|
||||
subtraction of two unlike-signed numbers produces a result
|
||||
greater than +127 or less than -128.
|
||||
|
||||
B = BRK COMMAND. Set if an interrupt caused by a BRK, reset if
|
||||
caused by an external interrupt.
|
||||
|
||||
D = DECIMAL MODE. Set if decimal mode active.
|
||||
|
||||
I = IRQ DISABLE. Set if maskable interrupts are disabled.
|
||||
|
||||
Z = ZERO. Set if the result of the last operation (load/inc/dec/
|
||||
add/sub) was zero.
|
||||
|
||||
C = CARRY. Set if the add produced a carry, or if the subtraction
|
||||
produced a borrow. Also holds bits after a logical shift.
|
||||
*------------------------------------------------------------------------------
|
||||
*/
|
||||
enum eCpuFlagMasks {
|
||||
FLAGS_CARRY = 0x01, // 0: C
|
||||
FLAGS_ZERO = 0x02, // 1: Z
|
||||
FLAGS_IRQ = 0x04, // 2: I
|
||||
FLAGS_DEC = 0x08, // 3: D
|
||||
FLAGS_BRK = 0x10, // 4: B (Clear if interrupt vectoring, set if BRK or PHP)
|
||||
FLAGS_UNUSED = 0x20, // 5: Unused flag (always set).
|
||||
FLAGS_OVERFLOW = 0x40, // 6: V
|
||||
FLAGS_SIGN = 0x80 // 7: N
|
||||
};
|
||||
|
||||
enum eLogicOps {
|
||||
LOGOP_OR,
|
||||
LOGOP_AND,
|
||||
LOGOP_EOR
|
||||
};
|
||||
|
||||
class MKCpu
|
||||
{
|
||||
public:
|
||||
|
||||
MKCpu();
|
||||
MKCpu(Memory *pmem);
|
||||
~MKCpu();
|
||||
|
||||
Regs *ExecOpcode(unsigned short memaddr);
|
||||
Regs *GetRegs();
|
||||
queue<string> GetExecHistory();
|
||||
unsigned short Disassemble(unsigned short addr,
|
||||
char *instrbuf); // Disassemble instruction in memory, return next instruction addr.
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
struct Regs mReg; // CPU registers
|
||||
Memory *mpMem; // pointer to memory object
|
||||
bool mLocalMem; // true - memory locally allocated
|
||||
OpCodesMap mOpCodesMap; // hash table of all opcodes
|
||||
int mAddrModesLen[ADDRMODE_LENGTH]; // array of instructions lengths per addressing mode
|
||||
string mArgFmtTbl[ADDRMODE_LENGTH]; // array of instructions assembly formats per addressing mode
|
||||
queue<string> mExecHistory; // history of last 20 op-codes with arguments and registers statuses
|
||||
|
||||
|
||||
void InitCpu();
|
||||
void SetFlags(unsigned char reg); // set CPU flags ZERO and SIGN based on Acc, X or Y
|
||||
unsigned char ShiftLeft(unsigned char arg8); // Arithmetic Shift Left, set Carry flag
|
||||
unsigned char ShiftRight(unsigned char arg8); // Logical Shift Right, update flags NZC.
|
||||
unsigned char RotateLeft(unsigned char arg8); // Rotate left, Carry to bit 0, bit 7 to Carry, update flags N and Z.
|
||||
unsigned char RotateRight(unsigned char arg8); // Rotate left, Carry to bit 7, bit 0 to Carry, update flags N and Z.
|
||||
unsigned short GetArg16(unsigned char offs); // Get 2-byte argument, add offset, increase PC.
|
||||
void LogicOpAcc(unsigned short addr, int logop); // Perform logical bitwise operation between memory location and Acc.
|
||||
// Result in Acc. Set flags.
|
||||
unsigned short ComputeRelJump(unsigned char offs); // Compute new PC based on relative offset.
|
||||
unsigned short ComputeRelJump(unsigned short addr,
|
||||
unsigned char offs); // Compute new address after branch based on relative offset.
|
||||
unsigned char Conv2Bcd(unsigned short v); // Convert number to BCD representation.
|
||||
unsigned short Bcd2Num(unsigned char v); // Convert BCD code to number.
|
||||
bool CheckFlag(unsigned char flag); // Return true if given CPU status flag is set, false otherwise.
|
||||
void SetFlag(bool set, unsigned char flag); // Set or unset processor status flag.
|
||||
unsigned char AddWithCarry(unsigned char mem8); // Add With Carry, update flags and Acc.
|
||||
unsigned char SubWithCarry(unsigned char mem8); // Subtract With Carry, update flags and Acc.
|
||||
unsigned short GetAddrWithMode(int mode); // Get address of the byte argument with specified addr. mode
|
||||
unsigned short GetArgWithMode(unsigned short opcaddr,
|
||||
int mode); // Get argument from address with specified addr. mode
|
||||
unsigned short Disassemble(); // Disassemble instruction and argument per addressing mode
|
||||
void Add2History(string s); // add entry to op-codes execute history
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
|
@ -1,20 +1,20 @@
|
||||
#include "MKGenException.h"
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
MKGenException::MKGenException()
|
||||
{
|
||||
msCause = "Ouch!";
|
||||
}
|
||||
|
||||
MKGenException::MKGenException(string cause)
|
||||
{
|
||||
msCause = cause;
|
||||
}
|
||||
|
||||
string MKGenException::GetCause()
|
||||
{
|
||||
return msCause;
|
||||
}
|
||||
|
||||
} // namespace MKBasic
|
||||
#include "MKGenException.h"
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
MKGenException::MKGenException()
|
||||
{
|
||||
msCause = "Ouch!";
|
||||
}
|
||||
|
||||
MKGenException::MKGenException(string cause)
|
||||
{
|
||||
msCause = cause;
|
||||
}
|
||||
|
||||
string MKGenException::GetCause()
|
||||
{
|
||||
return msCause;
|
||||
}
|
||||
|
||||
} // namespace MKBasic
|
||||
|
@ -1,23 +1,24 @@
|
||||
#ifndef MKGENEXCEPTION_H
|
||||
#define MKGENEXCEPTION_H
|
||||
|
||||
#include <string>
|
||||
#include <exception>
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
class MKGenException : public exception {
|
||||
public:
|
||||
MKGenException();
|
||||
MKGenException(string cause);
|
||||
string GetCause();
|
||||
|
||||
private:
|
||||
string msCause;
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
#ifndef MKGENEXCEPTION_H
|
||||
#define MKGENEXCEPTION_H
|
||||
|
||||
#include <string>
|
||||
#include <exception>
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
class MKGenException : public exception {
|
||||
public:
|
||||
MKGenException();
|
||||
MKGenException(string cause);
|
||||
~MKGenException() throw() {};
|
||||
string GetCause();
|
||||
|
||||
private:
|
||||
string msCause;
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
|
46
Makefile.win
Normal file
46
Makefile.win
Normal file
@ -0,0 +1,46 @@
|
||||
# Project: MKBasic
|
||||
# Makefile created by Dev-C++ 5.11
|
||||
|
||||
CPP = g++.exe -D__DEBUG__
|
||||
CC = gcc.exe -D__DEBUG__
|
||||
WINDRES = windres.exe
|
||||
OBJ = main.o VMachine.o MKBasic.o MKCpu.o Memory.o Display.o MKGenException.o
|
||||
LINKOBJ = main.o VMachine.o MKBasic.o MKCpu.o Memory.o Display.o MKGenException.o
|
||||
LIBS = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib32" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib32" -static-libgcc -m32 -g3
|
||||
INCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include"
|
||||
CXXINCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"
|
||||
BIN = MKBasic.exe
|
||||
CXXFLAGS = $(CXXINCS) -m32 -std=c++11 -Wall -Wextra -pedantic -g3
|
||||
CFLAGS = $(INCS) -m32 -std=c++11 -Wall -Wextra -pedantic -g3
|
||||
RM = rm.exe -f
|
||||
|
||||
.PHONY: all all-before all-after clean clean-custom
|
||||
|
||||
all: all-before $(BIN) all-after
|
||||
|
||||
clean: clean-custom
|
||||
${RM} $(OBJ) $(BIN)
|
||||
|
||||
$(BIN): $(OBJ)
|
||||
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
|
||||
|
||||
main.o: main.cpp
|
||||
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)
|
||||
|
||||
VMachine.o: VMachine.cpp
|
||||
$(CPP) -c VMachine.cpp -o VMachine.o $(CXXFLAGS)
|
||||
|
||||
MKBasic.o: MKBasic.cpp
|
||||
$(CPP) -c MKBasic.cpp -o MKBasic.o $(CXXFLAGS)
|
||||
|
||||
MKCpu.o: MKCpu.cpp
|
||||
$(CPP) -c MKCpu.cpp -o MKCpu.o $(CXXFLAGS)
|
||||
|
||||
Memory.o: Memory.cpp
|
||||
$(CPP) -c Memory.cpp -o Memory.o $(CXXFLAGS)
|
||||
|
||||
Display.o: Display.cpp
|
||||
$(CPP) -c Display.cpp -o Display.o $(CXXFLAGS)
|
||||
|
||||
MKGenException.o: MKGenException.cpp
|
||||
$(CPP) -c MKGenException.cpp -o MKGenException.o $(CXXFLAGS)
|
773
Memory.cpp
773
Memory.cpp
@ -1,310 +1,463 @@
|
||||
#include "Memory.h"
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
|
||||
//#define DBG 1
|
||||
#if defined (DBG)
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
#endif
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
Memory::Memory()
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
Memory::~Memory()
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::Initialize()
|
||||
{
|
||||
unsigned short addr = 0;
|
||||
for (int i=0; i < 0xFFFF; i++) {
|
||||
m8bitMem[addr++] = 0;
|
||||
}
|
||||
mCharIOAddr = CHARIO_ADDR;
|
||||
mCharIOActive = false;
|
||||
mIOEcho = false;
|
||||
mInBufDataBegin = mInBufDataEnd = 0;
|
||||
mOutBufDataBegin = mOutBufDataEnd = 0;
|
||||
mROMBegin = ROM_BEGIN;
|
||||
mROMEnd = ROM_END;
|
||||
mROMActive = false;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::EnableROM()
|
||||
{
|
||||
mROMActive = true;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::EnableROM(unsigned short start, unsigned short end)
|
||||
{
|
||||
if (mROMEnd > mROMBegin) {
|
||||
mROMBegin = start;
|
||||
mROMEnd = end;
|
||||
}
|
||||
EnableROM();
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: ReadCharKb()
|
||||
* Purpose: If char I/O active, read character from console
|
||||
* (non-blocking) and put in an input FIFO buffer.
|
||||
* Arguments: n/a
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
unsigned char Memory::ReadCharKb()
|
||||
{
|
||||
unsigned char ret = 0;
|
||||
if (mCharIOActive) {
|
||||
int c;
|
||||
putchar('?');
|
||||
while(!kbhit());
|
||||
c = getch();
|
||||
if (mIOEcho) putchar(c);
|
||||
mCharIOBufIn[mInBufDataEnd] = c;
|
||||
mInBufDataEnd++;
|
||||
if (mInBufDataEnd >= CHARIO_BUF_SIZE) mInBufDataEnd = 0;
|
||||
ret = c;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GetCharIn()
|
||||
* Purpose: Return character from the emulated character I/O FIFO
|
||||
* input buffer or -1 if FIFO empty or char I/O not active.
|
||||
* Arguments: n/a
|
||||
* Returns: character
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
char Memory::GetCharIn()
|
||||
{
|
||||
char ret = -1;
|
||||
if (mCharIOActive) {
|
||||
if (mInBufDataEnd != mInBufDataBegin) {
|
||||
ret = mCharIOBufIn[mInBufDataBegin];
|
||||
mInBufDataBegin++;
|
||||
if (mInBufDataBegin >= CHARIO_BUF_SIZE) mInBufDataBegin = 0;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GetCharOut()
|
||||
* Purpose: Return character from the emulated character I/O FIFO
|
||||
* output buffer or -1 if FIFO empty or char I/O not
|
||||
* active.
|
||||
* Arguments: n/a
|
||||
* Returns: character
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
char Memory::GetCharOut()
|
||||
{
|
||||
char ret = -1;
|
||||
if (mCharIOActive) {
|
||||
if (mOutBufDataEnd != mOutBufDataBegin) {
|
||||
ret = mCharIOBufOut[mOutBufDataBegin];
|
||||
mOutBufDataBegin++;
|
||||
if (mOutBufDataBegin >= CHARIO_BUF_SIZE) mOutBufDataBegin = 0;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: PutCharIO()
|
||||
* Purpose: Put character in the output char I/O FIFO buffer.
|
||||
* Arguments: c - character
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::PutCharIO(char c)
|
||||
{
|
||||
if (mCharIOActive) {
|
||||
mCharIOBufOut[mOutBufDataEnd] = c;
|
||||
mOutBufDataEnd++;
|
||||
if (mOutBufDataEnd >= CHARIO_BUF_SIZE) mOutBufDataEnd = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
unsigned char Memory::Peek8bit(unsigned short addr)
|
||||
{
|
||||
if (mCharIOActive && addr == mCharIOAddr) {
|
||||
#if defined (DBG)
|
||||
cout << "DBG: Peek8bit($" << hex << addr << ") BEFORE ReadCharKb()" << endl;
|
||||
cout << "DBG: m8bitMem[$" << hex << addr << "] = $" << hex << (unsigned short)m8bitMem[addr] << endl;
|
||||
for (unsigned int a = 0xFFF0; a < 0x10000; a++) {
|
||||
cout << "DBG: m8bitMem[$" << hex << a << "] = $" << hex << (unsigned short)m8bitMem[a] << endl;
|
||||
}
|
||||
#endif
|
||||
m8bitMem[addr] = ReadCharKb();
|
||||
#if defined (DBG)
|
||||
cout << "************************" << endl;
|
||||
cout << "DBG: Peek8bit($" << hex << addr << ") AFTER ReadCharKb()" << endl;
|
||||
cout << "DBG: m8bitMem[$" << hex << addr << "] = $" << hex << (unsigned short)m8bitMem[addr] << endl;
|
||||
for (unsigned int a = 0xFFF0; a < 0x10000; a++) {
|
||||
cout << "DBG: m8bitMem[$" << hex << a << "] = $" << hex << (unsigned short)m8bitMem[a] << endl;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
return m8bitMem[addr];
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
unsigned short Memory::Peek16bit(unsigned short addr)
|
||||
{
|
||||
unsigned short ret = 0;
|
||||
|
||||
if (mCharIOActive && addr == mCharIOAddr) {
|
||||
#if defined (DBG)
|
||||
cout << "DBG: Peek16bit(" << addr << ")" << endl;
|
||||
#endif
|
||||
m8bitMem[addr] = ReadCharKb();
|
||||
}
|
||||
|
||||
ret = m8bitMem[addr++];
|
||||
ret += m8bitMem[addr] * 256;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: Poke8bit()
|
||||
* Purpose: Write byte to specified memory location.
|
||||
* If the memory location is mapped to character I/O,
|
||||
* write value to output buffer and memory location.
|
||||
* If the memory location is protected (ROM), do not
|
||||
* write the value.
|
||||
* Arguments: addr - (0x0000..0xffff) memory address,
|
||||
* val - value (0x00..0xff)
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::Poke8bit(unsigned short addr, unsigned char val)
|
||||
{
|
||||
if (mCharIOActive && addr == mCharIOAddr)
|
||||
PutCharIO(val);
|
||||
if (!mROMActive || (addr < ROM_BEGIN || addr > ROM_END)) {
|
||||
m8bitMem[addr] = val;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: SetCharIO()
|
||||
* Purpose: Activates and sets an address of basic character I/O
|
||||
* emulation (console).
|
||||
* Arguments: addr - address of I/O area (0x0000..0xFFFF)
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::SetCharIO(unsigned short addr, bool echo)
|
||||
{
|
||||
mCharIOAddr = addr;
|
||||
mCharIOActive = true;
|
||||
mIOEcho = echo;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: DisableCharIO()
|
||||
* Purpose: Deactivates basic character I/O emulation (console).
|
||||
* Arguments: n/a
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::DisableCharIO()
|
||||
{
|
||||
mCharIOActive = false;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GetCharIOAddr()
|
||||
* Purpose: Returns current address of basic character I/O area.
|
||||
* Arguments: n/a
|
||||
* Returns: address of I/O area
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
unsigned short Memory::GetCharIOAddr()
|
||||
{
|
||||
return mCharIOAddr;
|
||||
}
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#include "Memory.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#if defined(WINDOWS)
|
||||
#include <conio.h>
|
||||
#endif
|
||||
|
||||
//#define DBG 1
|
||||
#if defined (DBG)
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
#endif
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
Memory::Memory()
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
Memory::~Memory()
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::Initialize()
|
||||
{
|
||||
unsigned short addr = 0;
|
||||
for (int i=0; i < 0xFFFF; i++) {
|
||||
m8bitMem[addr++] = 0;
|
||||
}
|
||||
mCharIOAddr = CHARIO_ADDR;
|
||||
mCharIOActive = false;
|
||||
mIOEcho = false;
|
||||
mInBufDataBegin = mInBufDataEnd = 0;
|
||||
mOutBufDataBegin = mOutBufDataEnd = 0;
|
||||
mROMBegin = ROM_BEGIN;
|
||||
mROMEnd = ROM_END;
|
||||
mROMActive = false;
|
||||
}
|
||||
|
||||
#if defined(LINUX)
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
|
||||
struct termios orig_termios;
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void reset_terminal_mode()
|
||||
{
|
||||
tcsetattr(0, TCSANOW, &orig_termios);
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::set_conio_terminal_mode()
|
||||
{
|
||||
struct termios new_termios;
|
||||
|
||||
/* take two copies - one for now, one for later */
|
||||
tcgetattr(0, &orig_termios);
|
||||
memcpy(&new_termios, &orig_termios, sizeof(new_termios));
|
||||
|
||||
/* register cleanup handler, and set the new terminal mode */
|
||||
atexit(reset_terminal_mode);
|
||||
cfmakeraw(&new_termios);
|
||||
tcsetattr(0, TCSANOW, &new_termios);
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
int Memory::kbhit()
|
||||
{
|
||||
struct timeval tv = { 0L, 0L };
|
||||
fd_set fds;
|
||||
FD_ZERO(&fds);
|
||||
FD_SET(0, &fds);
|
||||
return select(1, &fds, NULL, NULL, &tv);
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
int Memory::getch()
|
||||
{
|
||||
int r;
|
||||
unsigned char c;
|
||||
if ((r = read(0, &c, sizeof(c))) < 0) {
|
||||
return r;
|
||||
} else {
|
||||
return c;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::EnableROM()
|
||||
{
|
||||
mROMActive = true;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::DisableROM()
|
||||
{
|
||||
mROMActive = false;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::SetROM(unsigned short start, unsigned short end)
|
||||
{
|
||||
if (mROMEnd > mROMBegin) {
|
||||
mROMBegin = start;
|
||||
mROMEnd = end;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::EnableROM(unsigned short start, unsigned short end)
|
||||
{
|
||||
SetROM(start,end);
|
||||
EnableROM();
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: ReadCharKb()
|
||||
* Purpose: If char I/O active, read character from console
|
||||
* (non-blocking) and put in an input FIFO buffer.
|
||||
* Arguments: nonblock - if true, works in non-blocking mode
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
unsigned char Memory::ReadCharKb(bool nonblock)
|
||||
{
|
||||
unsigned char ret = 0;
|
||||
if (mCharIOActive) {
|
||||
#if defined(LINUX)
|
||||
set_conio_terminal_mode();
|
||||
#endif
|
||||
static int c = ' ';
|
||||
putchar('\n');
|
||||
if (mIOEcho && isprint(c)) putchar(c);
|
||||
else putchar(' ');
|
||||
fputs("<-Character Input (CTRL-Y to BREAK) ?\r",stdout);
|
||||
fflush(stdout);
|
||||
if (!nonblock) while(!kbhit());
|
||||
else c = 0;
|
||||
c = getch();
|
||||
#if defined(LINUX)
|
||||
if (c == 3) { // capture CTRL-C in CONIO mode
|
||||
reset_terminal_mode();
|
||||
kill(getpid(),SIGINT);
|
||||
}
|
||||
#endif
|
||||
fputs(" \r",stdout);
|
||||
fflush(stdout);
|
||||
mCharIOBufIn[mInBufDataEnd] = c;
|
||||
mInBufDataEnd++;
|
||||
if (mInBufDataEnd >= CHARIO_BUF_SIZE) mInBufDataEnd = 0;
|
||||
ret = c;
|
||||
#if defined(LINUX)
|
||||
reset_terminal_mode();
|
||||
#endif
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GetCharIn()
|
||||
* Purpose: Return character from the emulated character I/O FIFO
|
||||
* input buffer or -1 if FIFO empty or char I/O not active.
|
||||
* Arguments: n/a
|
||||
* Returns: character
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
char Memory::GetCharIn()
|
||||
{
|
||||
char ret = -1;
|
||||
if (mCharIOActive) {
|
||||
if (mInBufDataEnd != mInBufDataBegin) {
|
||||
ret = mCharIOBufIn[mInBufDataBegin];
|
||||
mInBufDataBegin++;
|
||||
if (mInBufDataBegin >= CHARIO_BUF_SIZE) mInBufDataBegin = 0;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GetCharOut()
|
||||
* Purpose: Return character from the emulated character I/O FIFO
|
||||
* output buffer or -1 if FIFO empty or char I/O not
|
||||
* active.
|
||||
* Arguments: n/a
|
||||
* Returns: character
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
char Memory::GetCharOut()
|
||||
{
|
||||
char ret = -1;
|
||||
if (mCharIOActive) {
|
||||
if (mOutBufDataEnd != mOutBufDataBegin) {
|
||||
ret = mCharIOBufOut[mOutBufDataBegin];
|
||||
mOutBufDataBegin++;
|
||||
if (mOutBufDataBegin >= CHARIO_BUF_SIZE) mOutBufDataBegin = 0;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: PutCharIO()
|
||||
* Purpose: Put character in the output char I/O FIFO buffer.
|
||||
* Arguments: c - character
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::PutCharIO(char c)
|
||||
{
|
||||
if (mCharIOActive) {
|
||||
mCharIOBufOut[mOutBufDataEnd] = c;
|
||||
mOutBufDataEnd++;
|
||||
if (mOutBufDataEnd >= CHARIO_BUF_SIZE) mOutBufDataEnd = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
unsigned char Memory::Peek8bit(unsigned short addr)
|
||||
{
|
||||
if (mCharIOActive && addr == mCharIOAddr) {
|
||||
m8bitMem[addr] = ReadCharKb(false); // blocking mode input
|
||||
} else if (mCharIOActive && addr == mCharIOAddr+1) {
|
||||
m8bitMem[addr] = ReadCharKb(true); // non-blocking mode input
|
||||
}
|
||||
|
||||
return m8bitMem[addr];
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
unsigned short Memory::Peek16bit(unsigned short addr)
|
||||
{
|
||||
unsigned short ret = 0;
|
||||
|
||||
if (mCharIOActive && addr == mCharIOAddr) {
|
||||
m8bitMem[addr] = ReadCharKb(false); // blocking mode input
|
||||
} else if (mCharIOActive && addr == mCharIOAddr+1) {
|
||||
m8bitMem[addr] = ReadCharKb(true); // non-blocking mode input
|
||||
}
|
||||
|
||||
ret = m8bitMem[addr++];
|
||||
ret += m8bitMem[addr] * 256;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: Poke8bit()
|
||||
* Purpose: Write byte to specified memory location.
|
||||
* If the memory location is mapped to character I/O,
|
||||
* write value to output buffer and memory location.
|
||||
* If the memory location is protected (ROM), do not
|
||||
* write the value.
|
||||
* Arguments: addr - (0x0000..0xffff) memory address,
|
||||
* val - value (0x00..0xff)
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::Poke8bit(unsigned short addr, unsigned char val)
|
||||
{
|
||||
if (mCharIOActive && addr == mCharIOAddr)
|
||||
PutCharIO(val);
|
||||
if (!mROMActive || (addr < mROMBegin || addr > mROMEnd)) {
|
||||
m8bitMem[addr] = val;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: SetCharIO()
|
||||
* Purpose: Activates and sets an address of basic character I/O
|
||||
* emulation (console).
|
||||
* Arguments: addr - address of I/O area (0x0000..0xFFFF)
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::SetCharIO(unsigned short addr, bool echo)
|
||||
{
|
||||
mCharIOAddr = addr;
|
||||
mCharIOActive = true;
|
||||
mIOEcho = echo;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: DisableCharIO()
|
||||
* Purpose: Deactivates basic character I/O emulation (console).
|
||||
* Arguments: n/a
|
||||
* Returns: n/a
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
void Memory::DisableCharIO()
|
||||
{
|
||||
mCharIOActive = false;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method: GetCharIOAddr()
|
||||
* Purpose: Returns current address of basic character I/O area.
|
||||
* Arguments: n/a
|
||||
* Returns: address of I/O area
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
unsigned short Memory::GetCharIOAddr()
|
||||
{
|
||||
return mCharIOAddr;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
unsigned short Memory::GetROMBegin()
|
||||
{
|
||||
return mROMBegin;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
unsigned short Memory::GetROMEnd()
|
||||
{
|
||||
return mROMEnd;
|
||||
}
|
||||
|
||||
/*
|
||||
*--------------------------------------------------------------------
|
||||
* Method:
|
||||
* Purpose:
|
||||
* Arguments:
|
||||
* Returns:
|
||||
*--------------------------------------------------------------------
|
||||
*/
|
||||
bool Memory::IsROMEnabled()
|
||||
{
|
||||
return mROMActive;
|
||||
}
|
||||
|
||||
} // namespace MKBasic
|
||||
|
132
Memory.h
132
Memory.h
@ -1,55 +1,77 @@
|
||||
#ifndef MEMORY_H
|
||||
#define MEMORY_H
|
||||
|
||||
#define MAX_8BIT_ADDR 0xFFFF
|
||||
#define CHARIO_ADDR 0xE000
|
||||
#define CHARIO_BUF_SIZE 256
|
||||
#define ROM_BEGIN 0xD000
|
||||
#define ROM_END 0xDFFF
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
class Memory
|
||||
{
|
||||
public:
|
||||
|
||||
Memory();
|
||||
~Memory();
|
||||
|
||||
void Initialize();
|
||||
unsigned char Peek8bit(unsigned short addr);
|
||||
unsigned short Peek16bit(unsigned short addr);
|
||||
void Poke8bit(unsigned short addr, unsigned char val);
|
||||
void SetCharIO(unsigned short addr, bool echo);
|
||||
void DisableCharIO();
|
||||
unsigned short GetCharIOAddr();
|
||||
char GetCharIn();
|
||||
char GetCharOut();
|
||||
void EnableROM();
|
||||
void EnableROM(unsigned short start, unsigned short end);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
unsigned char m8bitMem[MAX_8BIT_ADDR+1];
|
||||
char mCharIOBufIn[CHARIO_BUF_SIZE];
|
||||
char mCharIOBufOut[CHARIO_BUF_SIZE];
|
||||
unsigned int mInBufDataBegin;
|
||||
unsigned int mInBufDataEnd;
|
||||
unsigned int mOutBufDataBegin;
|
||||
unsigned int mOutBufDataEnd;
|
||||
unsigned short mCharIOAddr;
|
||||
bool mCharIOActive;
|
||||
bool mIOEcho;
|
||||
unsigned short mROMBegin;
|
||||
unsigned short mROMEnd;
|
||||
bool mROMActive;
|
||||
|
||||
unsigned char ReadCharKb();
|
||||
void PutCharIO(char c);
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
#ifndef MEMORY_H
|
||||
#define MEMORY_H
|
||||
|
||||
#include "system.h"
|
||||
|
||||
#if defined(LINUX)
|
||||
#include <unistd.h>
|
||||
#include <sys/select.h>
|
||||
#include <termios.h>
|
||||
#endif
|
||||
|
||||
#define MAX_8BIT_ADDR 0xFFFF
|
||||
#define CHARIO_ADDR 0xE000
|
||||
#define CHARIO_BUF_SIZE 256
|
||||
#define ROM_BEGIN 0xD000
|
||||
#define ROM_END 0xDFFF
|
||||
#define MIN_ROM_BEGIN 0x0200
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
class Memory
|
||||
{
|
||||
public:
|
||||
|
||||
Memory();
|
||||
~Memory();
|
||||
|
||||
void Initialize();
|
||||
unsigned char Peek8bit(unsigned short addr);
|
||||
unsigned short Peek16bit(unsigned short addr);
|
||||
void Poke8bit(unsigned short addr, unsigned char val);
|
||||
void SetCharIO(unsigned short addr, bool echo);
|
||||
void DisableCharIO();
|
||||
unsigned short GetCharIOAddr();
|
||||
char GetCharIn();
|
||||
char GetCharOut();
|
||||
void EnableROM();
|
||||
void DisableROM();
|
||||
void SetROM(unsigned short start, unsigned short end);
|
||||
void EnableROM(unsigned short start, unsigned short end);
|
||||
unsigned short GetROMBegin();
|
||||
unsigned short GetROMEnd();
|
||||
bool IsROMEnabled();
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
unsigned char m8bitMem[MAX_8BIT_ADDR+1];
|
||||
char mCharIOBufIn[CHARIO_BUF_SIZE];
|
||||
char mCharIOBufOut[CHARIO_BUF_SIZE];
|
||||
unsigned int mInBufDataBegin;
|
||||
unsigned int mInBufDataEnd;
|
||||
unsigned int mOutBufDataBegin;
|
||||
unsigned int mOutBufDataEnd;
|
||||
unsigned short mCharIOAddr;
|
||||
bool mCharIOActive;
|
||||
bool mIOEcho;
|
||||
unsigned short mROMBegin;
|
||||
unsigned short mROMEnd;
|
||||
bool mROMActive;
|
||||
|
||||
unsigned char ReadCharKb(bool nonblock);
|
||||
void PutCharIO(char c);
|
||||
|
||||
#if defined(LINUX)
|
||||
|
||||
void set_conio_terminal_mode();
|
||||
int kbhit();
|
||||
int getch();
|
||||
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
|
48
Notes.txt
48
Notes.txt
@ -1,25 +1,25 @@
|
||||
|
||||
http://visual6502.org/wiki/index.php?title=6502DecimalMode
|
||||
|
||||
|
||||
NV-BDIZC
|
||||
|
||||
Tests for ADC
|
||||
00 + 00 and C=0 gives 00 and N=0 V=0 Z=1 C=0 (simulate)
|
||||
79 + 00 and C=1 gives 80 and N=1 V=1 Z=0 C=0 (simulate)
|
||||
24 + 56 and C=0 gives 80 and N=1 V=1 Z=0 C=0 (simulate)
|
||||
93 + 82 and C=0 gives 75 and N=0 V=1 Z=0 C=1 (simulate)
|
||||
89 + 76 and C=0 gives 65 and N=0 V=0 Z=0 C=1 (simulate)
|
||||
89 + 76 and C=1 gives 66 and N=0 V=0 Z=1 C=1 (simulate)
|
||||
80 + f0 and C=0 gives d0 and N=0 V=1 Z=0 C=1 (simulate)
|
||||
80 + fa and C=0 gives e0 and N=1 V=0 Z=0 C=1 (simulate)
|
||||
2f + 4f and C=0 gives 74 and N=0 V=0 Z=0 C=0 (simulate)
|
||||
6f + 00 and C=1 gives 76 and N=0 V=0 Z=0 C=0 (simulate)
|
||||
Tests for SBC
|
||||
00 - 00 and C=0 gives 99 and N=1 V=0 Z=0 C=0 (simulate)
|
||||
00 - 00 and C=1 gives 00 and N=0 V=0 Z=1 C=1 (simulate)
|
||||
00 - 01 and C=1 gives 99 and N=1 V=0 Z=0 C=0 (simulate)
|
||||
0a - 00 and C=1 gives 0a and N=0 V=0 Z=0 C=1 (simulate)
|
||||
0b - 00 and C=0 gives 0a and N=0 V=0 Z=0 C=1 (simulate)
|
||||
9a - 00 and C=1 gives 9a and N=1 V=0 Z=0 C=1 (simulate)
|
||||
|
||||
http://visual6502.org/wiki/index.php?title=6502DecimalMode
|
||||
|
||||
|
||||
NV-BDIZC
|
||||
|
||||
Tests for ADC
|
||||
00 + 00 and C=0 gives 00 and N=0 V=0 Z=1 C=0 (simulate)
|
||||
79 + 00 and C=1 gives 80 and N=1 V=1 Z=0 C=0 (simulate)
|
||||
24 + 56 and C=0 gives 80 and N=1 V=1 Z=0 C=0 (simulate)
|
||||
93 + 82 and C=0 gives 75 and N=0 V=1 Z=0 C=1 (simulate)
|
||||
89 + 76 and C=0 gives 65 and N=0 V=0 Z=0 C=1 (simulate)
|
||||
89 + 76 and C=1 gives 66 and N=0 V=0 Z=1 C=1 (simulate)
|
||||
80 + f0 and C=0 gives d0 and N=0 V=1 Z=0 C=1 (simulate)
|
||||
80 + fa and C=0 gives e0 and N=1 V=0 Z=0 C=1 (simulate)
|
||||
2f + 4f and C=0 gives 74 and N=0 V=0 Z=0 C=0 (simulate)
|
||||
6f + 00 and C=1 gives 76 and N=0 V=0 Z=0 C=0 (simulate)
|
||||
Tests for SBC
|
||||
00 - 00 and C=0 gives 99 and N=1 V=0 Z=0 C=0 (simulate)
|
||||
00 - 00 and C=1 gives 00 and N=0 V=0 Z=1 C=1 (simulate)
|
||||
00 - 01 and C=1 gives 99 and N=1 V=0 Z=0 C=0 (simulate)
|
||||
0a - 00 and C=1 gives 0a and N=0 V=0 Z=0 C=1 (simulate)
|
||||
0b - 00 and C=0 gives 0a and N=0 V=0 Z=0 C=1 (simulate)
|
||||
9a - 00 and C=1 gives 9a and N=1 V=0 Z=0 C=1 (simulate)
|
||||
9b - 00 and C=0 gives 9a and N=1 V=0 Z=0 C=1 (simulate)
|
324
ReadMe.txt
324
ReadMe.txt
@ -1,62 +1,262 @@
|
||||
|
||||
Project: MKBasic
|
||||
Author: Copyright (C) Marek Karcz 2016. All rights reserved.
|
||||
Purpose:
|
||||
MOS 6502 emulator, Virtual CPU/Machine and potentially retro-style 8-bit computer emulator,
|
||||
MOS-6502-compatible virtual computer featuring BASIC interpreter, machine code monitor etc.
|
||||
|
||||
Memory images extensions: .RAM, .ROM
|
||||
|
||||
Format of the memory definition file:
|
||||
|
||||
; comment
|
||||
ADDR
|
||||
address
|
||||
data
|
||||
ORG
|
||||
address
|
||||
|
||||
Where:
|
||||
ADDR - label indicating that starting address will follow in next
|
||||
line
|
||||
ORG - label indicating that the address counter will change to the
|
||||
value provided in next line
|
||||
address - decimal or hexadecimal (prefix $) address in memory
|
||||
|
||||
E.g:
|
||||
ADDR
|
||||
$200
|
||||
|
||||
or
|
||||
|
||||
ADDR
|
||||
512
|
||||
|
||||
changes the default start address (256) to 512.
|
||||
|
||||
ORG
|
||||
49152
|
||||
|
||||
moves address counter to address 49152, following data will be
|
||||
loaded from that address forward
|
||||
|
||||
data - the multi-line stream of decimal of hexadecimal ($xx) values
|
||||
of size unsigned char (byte: 0-255) separated with spaces
|
||||
or commas.
|
||||
|
||||
E.g.:
|
||||
$00 $00 $00 $00
|
||||
$00 $00 $00 $00
|
||||
|
||||
or
|
||||
|
||||
$00,$00,$00,$00
|
||||
|
||||
or
|
||||
|
||||
0 0 0 0
|
||||
|
||||
or
|
||||
|
||||
0,0,0,0
|
||||
0 0 0 0
|
||||
|
||||
Project: MKBasic (VM6502).
|
||||
|
||||
Author: Copyright (C) Marek Karcz 2016. All rights reserved.
|
||||
Free for personal and non-commercial use.
|
||||
Code can be distributed and included in derivative work under
|
||||
condition that the original copyright notice is preserved.
|
||||
For use in commercial product, please contact me to obtain
|
||||
permission and discuss possible fees, at: makarcz@yahoo.com
|
||||
This software is provided with no warranty.
|
||||
|
||||
Purpose:
|
||||
|
||||
MOS 6502 emulator, Virtual CPU/Machine and potentially retro-style 8-bit
|
||||
computer emulator.
|
||||
MOS-6502-compatible virtual computer featuring BASIC interpreter, machine code
|
||||
monitor, input/output device emulation etc.
|
||||
Program works in DOS/shell console (text mode) only.
|
||||
Makefile are included to build under Windows 32/64 (mingw compiler required)
|
||||
and under Linux Ubuntu or Ubuntu based.
|
||||
|
||||
To build under Windows 32/64:
|
||||
|
||||
* Install MINGW64 under C:\mingw-w64\x86_64-5.3.0 folder.
|
||||
* Run mingw terminal.
|
||||
* Change current directory to that of this project.
|
||||
* Run: makeming.bat
|
||||
|
||||
To build under Linux:
|
||||
|
||||
* Make sure C++11 compliant version of GCC compiler is installed.
|
||||
* Change current directory to that of this project.
|
||||
* Run: make clean all
|
||||
|
||||
Program passed following tests:
|
||||
|
||||
* 6502 functional test by Klaus Dormann
|
||||
* AllSuiteA.asm from project hmc-6502
|
||||
|
||||
1. Credits/attributions:
|
||||
|
||||
Parts of this project is based on or contains 3-rd party work:
|
||||
|
||||
- Tiny Basic.
|
||||
- Enhanced Basic by Lee Davison.
|
||||
- Microchess by Peter Jennings (http://www.benlo.com/microchess/index.html).
|
||||
- 6502 functional test by Klaus Dormann.
|
||||
- All Suite test from project hmc-6502.
|
||||
|
||||
2. Format of the memory image definition file.
|
||||
|
||||
Program can load raw binary image of MOS 6502 opcodes.
|
||||
Binary image is always loaded from address $0000 and can be up to 64 kB long,
|
||||
so the code must be properly located inside that image.
|
||||
Depending on your favorite 6502 assembler, you may need to use proper command
|
||||
line arguments or configuration to achieve properly formatted binary file.
|
||||
E.g.: if using CL65 from CC65 package, create configuration file that defines
|
||||
memory segments that your 6502 code uses, then all of the segments (except the
|
||||
last one) must have attribute 'fill' set to 'yes' so the unsused areas are
|
||||
filled with 0-s.
|
||||
Two CFG files, one for microchess and one for All Suite from hmc-6502 project
|
||||
are supplied with this project and assembler source code adapted to be
|
||||
compiled with CL65.
|
||||
Other assemblers may need a different approach or may not be able to generate
|
||||
binary images that are required for this emulator.
|
||||
|
||||
Program can also load memory image definition file (plain text), which is
|
||||
a format developed especially for this project.
|
||||
|
||||
The format of the plain text memory image definition file is described below:
|
||||
|
||||
; comments
|
||||
ADDR
|
||||
address
|
||||
data
|
||||
ORG
|
||||
address
|
||||
data
|
||||
IOADDR
|
||||
address
|
||||
ROMBEGIN
|
||||
address
|
||||
ROMEND
|
||||
address
|
||||
ENROM
|
||||
ENIO
|
||||
EXEC
|
||||
address
|
||||
|
||||
Where:
|
||||
ADDR - label indicating that starting and run address will follow in
|
||||
the next line
|
||||
ORG - label indicating that the address counter will change to the
|
||||
value provided in next line
|
||||
IOADDR - label indicating that character I/O emulation trap address will
|
||||
follow in the next line
|
||||
ROMBEGIN - label indicating that the emulated read-only memory start address
|
||||
will follow in the next line
|
||||
ROMEND - label indicating that the emulated read-only memory end address
|
||||
will follow in the next line
|
||||
ENROM - enable read-only memory emulation
|
||||
ENIO - enable character I/O emulation
|
||||
EXEC - label indicating that the auto-execute address will follow
|
||||
in the next line
|
||||
|
||||
|
||||
address - decimal or hexadecimal (prefix $) address in memory
|
||||
|
||||
E.g:
|
||||
ADDR
|
||||
$0200
|
||||
|
||||
or
|
||||
|
||||
ADDR
|
||||
512
|
||||
|
||||
changes the default start address (256) to 512.
|
||||
|
||||
ORG
|
||||
49152
|
||||
|
||||
moves address counter to address 49152, following data will be
|
||||
loaded from that address forward
|
||||
|
||||
data - the multi-line stream of decimal of hexadecimal ($xx) values
|
||||
of size unsigned char (byte: 0-255) separated with spaces
|
||||
or commas.
|
||||
|
||||
E.g.:
|
||||
$00 $00 $00 $00
|
||||
$00 $00 $00 $00
|
||||
|
||||
or
|
||||
|
||||
$00,$00,$00,$00
|
||||
|
||||
or
|
||||
|
||||
0 0 0 0
|
||||
|
||||
or
|
||||
|
||||
0,0,0,0
|
||||
0 0 0 0
|
||||
|
||||
Each described above element of the memory image definition file is optional.
|
||||
|
||||
3. Character I/O emulation.
|
||||
|
||||
Emulator has ability to simulate a 80x25 text output display device and
|
||||
rudimentary character I/O functions. The emulation is implemented by the means
|
||||
of trapping memory locations defined to be designated I/O emulation addresses.
|
||||
The default memory location is $E000 and also by default, the character I/O
|
||||
is disabled. It can be enabled from the debug console with 'I' command:
|
||||
|
||||
I hexaddr
|
||||
|
||||
E.g.:
|
||||
|
||||
I E000
|
||||
|
||||
or
|
||||
|
||||
I FE00
|
||||
|
||||
or by putting optional statements in the memory image dedinition file:
|
||||
|
||||
ENIO
|
||||
|
||||
or
|
||||
|
||||
IOADDR
|
||||
address
|
||||
ENIO
|
||||
|
||||
Where:
|
||||
|
||||
address - decimal or hexadecimal (with prefix '$') address in memory
|
||||
$0000 - $FFFF.
|
||||
|
||||
The same address is used for both, input and output operations.
|
||||
|
||||
Reading from IOADDR inside the 6502 code invokes a blocking character
|
||||
input function from user's DOS/shell session.
|
||||
After user enters the character, the memory location contains the character
|
||||
code and also emulated CPU Acc register contains the same code.
|
||||
|
||||
Reading from IOADDR+1 inside 6502 code invokes a non-blocking character
|
||||
input function from user's DOS/shell session.
|
||||
This function is different than blocking one in one respect.
|
||||
This function will return value 0 in the memory location and Acc register
|
||||
if there was no key pressed by the user (no character waiting in buffer).
|
||||
If there was a key typed, the function will act as the blocking counterpart.
|
||||
|
||||
Writing to IOADDR inside the 6502 code will result in character code
|
||||
being put in the IOADDR memory location and also written to the character
|
||||
output buffer of the emulated display device. That character is not
|
||||
immediately transferred to the user's DOS/shell session. It is written to the
|
||||
emulated display's text memory instead. Depending on the mode in which
|
||||
emulator is currently working (continuous or step-by-step code execution),
|
||||
the emulated display device contents may or may not be updated on the user's
|
||||
screen in real time fashion. Remember that this is a DOS/shell console
|
||||
application. The user's console is shared among various functions of the
|
||||
program. In step-by-step mode, if the character I/O emulation is enabled, the
|
||||
current contents of the emulated display device can be displayed with
|
||||
corresponding debug console command: 'T'.
|
||||
|
||||
4. ROM (read-only memory) emulation.
|
||||
|
||||
This facility provides very basic means for memory mapping of the read-only
|
||||
area. This may be required by some 6502 programs that check for non-writable
|
||||
memory to establish the bounds of memory that can be used for data and code.
|
||||
One good example is Tiny Basic.
|
||||
By default the ROM emulation is disabled and the memory range of ROM is
|
||||
defined as $D000 - $DFFF.
|
||||
ROM emulation can be enabled (and the memory range defined) using debug
|
||||
console's command 'K':
|
||||
|
||||
K [rombegin] [romend] - to enable
|
||||
|
||||
or
|
||||
|
||||
K - to disable
|
||||
|
||||
The ROM emulation can also be defined and enabled in the memory image
|
||||
definition file with following statements:
|
||||
|
||||
ROMBEGIN
|
||||
address
|
||||
ROMEND
|
||||
address
|
||||
ENROM
|
||||
|
||||
5. Additional comments and remarks.
|
||||
|
||||
IOADDR is permitted to be located in the emulated ROM memory range.
|
||||
The writing to IOADDR is trapped first before checking ROM range and writing
|
||||
to it is permitted when character I/O emulation and ROM are enabled at the
|
||||
same time. It is a good idea in fact to put the IOADDR inside ROM range,
|
||||
otherwise memory scanning routines like the one in Tiny Basic may trigger
|
||||
unexpected character input because of the reading from IOADDR during the scan.
|
||||
If you experience unexpected character input prompt while emulating
|
||||
6502 code, this may be the case. Reconfigure your IOADDR to be inside ROM in
|
||||
such case and try again.
|
||||
|
||||
6. Warranty and License Agreement.
|
||||
|
||||
This software is provided with No Warranty.
|
||||
I (The Author) will not be held responsible for any damage to computer
|
||||
systems, data or user's health resulting from using this software.
|
||||
Please use responsibly.
|
||||
This software is provided in hope that it will be be useful and free of
|
||||
charge for non-commercial and educational use.
|
||||
Distribution of this software in non-commercial and educational derivative
|
||||
work is permitted under condition that original copyright notices and
|
||||
comments are preserved. Some 3-rd party work included with this project
|
||||
may require separate application for permission from their respective
|
||||
authors/copyright owners.
|
||||
|
||||
|
||||
|
||||
|
582
TestBCD.65s
582
TestBCD.65s
@ -1,291 +1,291 @@
|
||||
; Verify decimal mode behavior
|
||||
; Written by Bruce Clark. This code is public domain.
|
||||
;
|
||||
; Returns:
|
||||
; ERROR = 0 if the test passed
|
||||
; ERROR = 1 if the test failed
|
||||
;
|
||||
; This routine requires 17 bytes of RAM -- 1 byte each for:
|
||||
; AR, CF, DA, DNVZC, ERROR, HA, HNVZC, N1, N1H, N1L, N2, N2L, NF, VF, and ZF
|
||||
; and 2 bytes for N2H
|
||||
;
|
||||
; Variables:
|
||||
; N1 and N2 are the two numbers to be added or subtracted
|
||||
; N1H, N1L, N2H, and N2L are the upper 4 bits and lower 4 bits of N1 and N2
|
||||
; DA and DNVZC are the actual accumulator and flag results in decimal mode
|
||||
; HA and HNVZC are the accumulator and flag results when N1 and N2 are
|
||||
; added or subtracted using binary arithmetic
|
||||
; AR, NF, VF, ZF, and CF are the predicted decimal mode accumulator and
|
||||
; flag results, calculated using binary arithmetic
|
||||
;
|
||||
; This program takes approximately 1 minute at 1 MHz (a few seconds more on
|
||||
; a 65C02 than a 6502 or 65816)
|
||||
;
|
||||
*=$0300
|
||||
|
||||
AR: .DB 0
|
||||
CF: .DB 0
|
||||
DA: .DB 0
|
||||
DNVZC: .DB 0
|
||||
ERROR: .DB 0
|
||||
HA: .DB 0
|
||||
HNVZC: .DB 0
|
||||
N1: .DB 0
|
||||
N1H: .DB 0
|
||||
N1L: .DB 0
|
||||
N2: .DB 0
|
||||
N2L: .DB 0
|
||||
NF: .DB 0
|
||||
VF: .DB 0
|
||||
ZF: .DB 0
|
||||
N2H: .DB 0,0
|
||||
|
||||
*=$0400
|
||||
|
||||
TEST: LDY #1 ; initialize Y (used to loop through carry flag values)
|
||||
STY ERROR ; store 1 in ERROR until the test passes
|
||||
LDA #0 ; initialize N1 and N2
|
||||
STA N1
|
||||
STA N2
|
||||
LOOP1: LDA N2 ; N2L = N2 & $0F
|
||||
AND #$0F ; [1] see text
|
||||
STA N2L
|
||||
LDA N2 ; N2H = N2 & $F0
|
||||
AND #$F0 ; [2] see text
|
||||
STA N2H
|
||||
ORA #$0F ; N2H+1 = (N2 & $F0) + $0F
|
||||
STA N2H+1
|
||||
LOOP2: LDA N1 ; N1L = N1 & $0F
|
||||
AND #$0F ; [3] see text
|
||||
STA N1L
|
||||
LDA N1 ; N1H = N1 & $F0
|
||||
AND #$F0 ; [4] see text
|
||||
STA N1H
|
||||
JSR ADD
|
||||
JSR A6502
|
||||
JSR COMPARE
|
||||
BNE DONE
|
||||
JSR SUB
|
||||
JSR S6502
|
||||
JSR COMPARE
|
||||
BNE DONE
|
||||
INC N1 ; [5] see text
|
||||
BNE LOOP2 ; loop through all 256 values of N1
|
||||
INC N2 ; [6] see text
|
||||
BNE LOOP1 ; loop through all 256 values of N2
|
||||
DEY
|
||||
BPL LOOP1 ; loop through both values of the carry flag
|
||||
LDA #0 ; test passed, so store 0 in ERROR
|
||||
STA ERROR
|
||||
DONE: RTS
|
||||
BRK
|
||||
|
||||
; Calculate the actual decimal mode accumulator and flags, the accumulator
|
||||
; and flag results when N1 is added to N2 using binary arithmetic, the
|
||||
; predicted accumulator result, the predicted carry flag, and the predicted
|
||||
; V flag
|
||||
;
|
||||
ADD: SED ; decimal mode
|
||||
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1
|
||||
ADC N2
|
||||
STA DA ; actual accumulator result in decimal mode
|
||||
PHP
|
||||
PLA
|
||||
STA DNVZC ; actual flags result in decimal mode
|
||||
CLD ; binary mode
|
||||
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1
|
||||
ADC N2
|
||||
STA HA ; accumulator result of N1+N2 using binary arithmetic
|
||||
|
||||
PHP
|
||||
PLA
|
||||
STA HNVZC ; flags result of N1+N2 using binary arithmetic
|
||||
CPY #1
|
||||
LDA N1L
|
||||
ADC N2L
|
||||
CMP #$0A
|
||||
LDX #0
|
||||
BCC A1
|
||||
INX
|
||||
ADC #5 ; add 6 (carry is set)
|
||||
AND #$0F
|
||||
SEC
|
||||
A1: ORA N1H
|
||||
;
|
||||
; if N1L + N2L < $0A, then add N2 & $F0
|
||||
; if N1L + N2L >= $0A, then add (N2 & $F0) + $0F + 1 (carry is set)
|
||||
;
|
||||
ADC N2H,X
|
||||
PHP
|
||||
BCS A2
|
||||
CMP #$A0
|
||||
BCC A3
|
||||
A2: ADC #$5F ; add $60 (carry is set)
|
||||
SEC
|
||||
A3: STA AR ; predicted accumulator result
|
||||
PHP
|
||||
PLA
|
||||
STA CF ; predicted carry result
|
||||
PLA
|
||||
;
|
||||
; note that all 8 bits of the P register are stored in VF
|
||||
;
|
||||
STA VF ; predicted V flags
|
||||
RTS
|
||||
|
||||
; Calculate the actual decimal mode accumulator and flags, and the
|
||||
; accumulator and flag results when N2 is subtracted from N1 using binary
|
||||
; arithmetic
|
||||
;
|
||||
SUB: SED ; decimal mode
|
||||
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1
|
||||
SBC N2
|
||||
STA DA ; actual accumulator result in decimal mode
|
||||
PHP
|
||||
PLA
|
||||
STA DNVZC ; actual flags result in decimal mode
|
||||
CLD ; binary mode
|
||||
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1
|
||||
SBC N2
|
||||
STA HA ; accumulator result of N1-N2 using binary arithmetic
|
||||
|
||||
PHP
|
||||
PLA
|
||||
STA HNVZC ; flags result of N1-N2 using binary arithmetic
|
||||
RTS
|
||||
|
||||
; Calculate the predicted SBC accumulator result for the 6502 and 65816
|
||||
|
||||
;
|
||||
SUB1: CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1L
|
||||
SBC N2L
|
||||
LDX #0
|
||||
BCS S11
|
||||
INX
|
||||
SBC #5 ; subtract 6 (carry is clear)
|
||||
AND #$0F
|
||||
CLC
|
||||
S11: ORA N1H
|
||||
;
|
||||
; if N1L - N2L >= 0, then subtract N2 & $F0
|
||||
; if N1L - N2L < 0, then subtract (N2 & $F0) + $0F + 1 (carry is clear)
|
||||
;
|
||||
SBC N2H,X
|
||||
BCS S12
|
||||
SBC #$5F ; subtract $60 (carry is clear)
|
||||
S12: STA AR
|
||||
RTS
|
||||
|
||||
; Calculate the predicted SBC accumulator result for the 6502 and 65C02
|
||||
|
||||
;
|
||||
SUB2: CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1L
|
||||
SBC N2L
|
||||
LDX #0
|
||||
BCS S21
|
||||
INX
|
||||
AND #$0F
|
||||
CLC
|
||||
S21: ORA N1H
|
||||
;
|
||||
; if N1L - N2L >= 0, then subtract N2 & $F0
|
||||
; if N1L - N2L < 0, then subtract (N2 & $F0) + $0F + 1 (carry is clear)
|
||||
;
|
||||
SBC N2H,X
|
||||
BCS S22
|
||||
SBC #$5F ; subtract $60 (carry is clear)
|
||||
S22: CPX #0
|
||||
BEQ S23
|
||||
SBC #6
|
||||
S23: STA AR ; predicted accumulator result
|
||||
RTS
|
||||
|
||||
; Compare accumulator actual results to predicted results
|
||||
;
|
||||
; Return:
|
||||
; Z flag = 1 (BEQ branch) if same
|
||||
; Z flag = 0 (BNE branch) if different
|
||||
;
|
||||
COMPARE:
|
||||
LDA DA
|
||||
CMP AR
|
||||
BNE C1
|
||||
LDA DNVZC ; [7] see text
|
||||
EOR NF
|
||||
AND #$80 ; mask off N flag
|
||||
BNE C1
|
||||
LDA DNVZC ; [8] see text
|
||||
EOR VF
|
||||
AND #$40 ; mask off V flag
|
||||
BNE C1 ; [9] see text
|
||||
LDA DNVZC
|
||||
EOR ZF ; mask off Z flag
|
||||
AND #2
|
||||
BNE C1 ; [10] see text
|
||||
LDA DNVZC
|
||||
EOR CF
|
||||
AND #1 ; mask off C flag
|
||||
C1: RTS
|
||||
|
||||
; These routines store the predicted values for ADC and SBC for the 6502,
|
||||
; 65C02, and 65816 in AR, CF, NF, VF, and ZF
|
||||
|
||||
A6502: LDA VF
|
||||
;
|
||||
; since all 8 bits of the P register were stored in VF, bit 7 of VF contains
|
||||
; the N flag for NF
|
||||
;
|
||||
STA NF
|
||||
LDA HNVZC
|
||||
STA ZF
|
||||
RTS
|
||||
|
||||
S6502: JSR SUB1
|
||||
LDA HNVZC
|
||||
STA NF
|
||||
STA VF
|
||||
STA ZF
|
||||
STA CF
|
||||
RTS
|
||||
|
||||
A65C02: LDA AR
|
||||
PHP
|
||||
PLA
|
||||
STA NF
|
||||
STA ZF
|
||||
RTS
|
||||
|
||||
S65C02: JSR SUB2
|
||||
LDA AR
|
||||
PHP
|
||||
PLA
|
||||
STA NF
|
||||
STA ZF
|
||||
LDA HNVZC
|
||||
STA VF
|
||||
STA CF
|
||||
RTS
|
||||
|
||||
A65816: LDA AR
|
||||
PHP
|
||||
PLA
|
||||
STA NF
|
||||
STA ZF
|
||||
RTS
|
||||
|
||||
S65816: JSR SUB1
|
||||
LDA AR
|
||||
PHP
|
||||
PLA
|
||||
STA NF
|
||||
STA ZF
|
||||
LDA HNVZC
|
||||
STA VF
|
||||
STA CF
|
||||
RTS
|
||||
; Verify decimal mode behavior
|
||||
; Written by Bruce Clark. This code is public domain.
|
||||
;
|
||||
; Returns:
|
||||
; ERROR = 0 if the test passed
|
||||
; ERROR = 1 if the test failed
|
||||
;
|
||||
; This routine requires 17 bytes of RAM -- 1 byte each for:
|
||||
; AR, CF, DA, DNVZC, ERROR, HA, HNVZC, N1, N1H, N1L, N2, N2L, NF, VF, and ZF
|
||||
; and 2 bytes for N2H
|
||||
;
|
||||
; Variables:
|
||||
; N1 and N2 are the two numbers to be added or subtracted
|
||||
; N1H, N1L, N2H, and N2L are the upper 4 bits and lower 4 bits of N1 and N2
|
||||
; DA and DNVZC are the actual accumulator and flag results in decimal mode
|
||||
; HA and HNVZC are the accumulator and flag results when N1 and N2 are
|
||||
; added or subtracted using binary arithmetic
|
||||
; AR, NF, VF, ZF, and CF are the predicted decimal mode accumulator and
|
||||
; flag results, calculated using binary arithmetic
|
||||
;
|
||||
; This program takes approximately 1 minute at 1 MHz (a few seconds more on
|
||||
; a 65C02 than a 6502 or 65816)
|
||||
;
|
||||
*=$0300
|
||||
|
||||
AR: .DB 0
|
||||
CF: .DB 0
|
||||
DA: .DB 0
|
||||
DNVZC: .DB 0
|
||||
ERROR: .DB 0
|
||||
HA: .DB 0
|
||||
HNVZC: .DB 0
|
||||
N1: .DB 0
|
||||
N1H: .DB 0
|
||||
N1L: .DB 0
|
||||
N2: .DB 0
|
||||
N2L: .DB 0
|
||||
NF: .DB 0
|
||||
VF: .DB 0
|
||||
ZF: .DB 0
|
||||
N2H: .DB 0,0
|
||||
|
||||
*=$0400
|
||||
|
||||
TEST: LDY #1 ; initialize Y (used to loop through carry flag values)
|
||||
STY ERROR ; store 1 in ERROR until the test passes
|
||||
LDA #0 ; initialize N1 and N2
|
||||
STA N1
|
||||
STA N2
|
||||
LOOP1: LDA N2 ; N2L = N2 & $0F
|
||||
AND #$0F ; [1] see text
|
||||
STA N2L
|
||||
LDA N2 ; N2H = N2 & $F0
|
||||
AND #$F0 ; [2] see text
|
||||
STA N2H
|
||||
ORA #$0F ; N2H+1 = (N2 & $F0) + $0F
|
||||
STA N2H+1
|
||||
LOOP2: LDA N1 ; N1L = N1 & $0F
|
||||
AND #$0F ; [3] see text
|
||||
STA N1L
|
||||
LDA N1 ; N1H = N1 & $F0
|
||||
AND #$F0 ; [4] see text
|
||||
STA N1H
|
||||
JSR ADD
|
||||
JSR A6502
|
||||
JSR COMPARE
|
||||
BNE DONE
|
||||
JSR SUB
|
||||
JSR S6502
|
||||
JSR COMPARE
|
||||
BNE DONE
|
||||
INC N1 ; [5] see text
|
||||
BNE LOOP2 ; loop through all 256 values of N1
|
||||
INC N2 ; [6] see text
|
||||
BNE LOOP1 ; loop through all 256 values of N2
|
||||
DEY
|
||||
BPL LOOP1 ; loop through both values of the carry flag
|
||||
LDA #0 ; test passed, so store 0 in ERROR
|
||||
STA ERROR
|
||||
DONE: RTS
|
||||
BRK
|
||||
|
||||
; Calculate the actual decimal mode accumulator and flags, the accumulator
|
||||
; and flag results when N1 is added to N2 using binary arithmetic, the
|
||||
; predicted accumulator result, the predicted carry flag, and the predicted
|
||||
; V flag
|
||||
;
|
||||
ADD: SED ; decimal mode
|
||||
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1
|
||||
ADC N2
|
||||
STA DA ; actual accumulator result in decimal mode
|
||||
PHP
|
||||
PLA
|
||||
STA DNVZC ; actual flags result in decimal mode
|
||||
CLD ; binary mode
|
||||
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1
|
||||
ADC N2
|
||||
STA HA ; accumulator result of N1+N2 using binary arithmetic
|
||||
|
||||
PHP
|
||||
PLA
|
||||
STA HNVZC ; flags result of N1+N2 using binary arithmetic
|
||||
CPY #1
|
||||
LDA N1L
|
||||
ADC N2L
|
||||
CMP #$0A
|
||||
LDX #0
|
||||
BCC A1
|
||||
INX
|
||||
ADC #5 ; add 6 (carry is set)
|
||||
AND #$0F
|
||||
SEC
|
||||
A1: ORA N1H
|
||||
;
|
||||
; if N1L + N2L < $0A, then add N2 & $F0
|
||||
; if N1L + N2L >= $0A, then add (N2 & $F0) + $0F + 1 (carry is set)
|
||||
;
|
||||
ADC N2H,X
|
||||
PHP
|
||||
BCS A2
|
||||
CMP #$A0
|
||||
BCC A3
|
||||
A2: ADC #$5F ; add $60 (carry is set)
|
||||
SEC
|
||||
A3: STA AR ; predicted accumulator result
|
||||
PHP
|
||||
PLA
|
||||
STA CF ; predicted carry result
|
||||
PLA
|
||||
;
|
||||
; note that all 8 bits of the P register are stored in VF
|
||||
;
|
||||
STA VF ; predicted V flags
|
||||
RTS
|
||||
|
||||
; Calculate the actual decimal mode accumulator and flags, and the
|
||||
; accumulator and flag results when N2 is subtracted from N1 using binary
|
||||
; arithmetic
|
||||
;
|
||||
SUB: SED ; decimal mode
|
||||
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1
|
||||
SBC N2
|
||||
STA DA ; actual accumulator result in decimal mode
|
||||
PHP
|
||||
PLA
|
||||
STA DNVZC ; actual flags result in decimal mode
|
||||
CLD ; binary mode
|
||||
CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1
|
||||
SBC N2
|
||||
STA HA ; accumulator result of N1-N2 using binary arithmetic
|
||||
|
||||
PHP
|
||||
PLA
|
||||
STA HNVZC ; flags result of N1-N2 using binary arithmetic
|
||||
RTS
|
||||
|
||||
; Calculate the predicted SBC accumulator result for the 6502 and 65816
|
||||
|
||||
;
|
||||
SUB1: CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1L
|
||||
SBC N2L
|
||||
LDX #0
|
||||
BCS S11
|
||||
INX
|
||||
SBC #5 ; subtract 6 (carry is clear)
|
||||
AND #$0F
|
||||
CLC
|
||||
S11: ORA N1H
|
||||
;
|
||||
; if N1L - N2L >= 0, then subtract N2 & $F0
|
||||
; if N1L - N2L < 0, then subtract (N2 & $F0) + $0F + 1 (carry is clear)
|
||||
;
|
||||
SBC N2H,X
|
||||
BCS S12
|
||||
SBC #$5F ; subtract $60 (carry is clear)
|
||||
S12: STA AR
|
||||
RTS
|
||||
|
||||
; Calculate the predicted SBC accumulator result for the 6502 and 65C02
|
||||
|
||||
;
|
||||
SUB2: CPY #1 ; set carry if Y = 1, clear carry if Y = 0
|
||||
LDA N1L
|
||||
SBC N2L
|
||||
LDX #0
|
||||
BCS S21
|
||||
INX
|
||||
AND #$0F
|
||||
CLC
|
||||
S21: ORA N1H
|
||||
;
|
||||
; if N1L - N2L >= 0, then subtract N2 & $F0
|
||||
; if N1L - N2L < 0, then subtract (N2 & $F0) + $0F + 1 (carry is clear)
|
||||
;
|
||||
SBC N2H,X
|
||||
BCS S22
|
||||
SBC #$5F ; subtract $60 (carry is clear)
|
||||
S22: CPX #0
|
||||
BEQ S23
|
||||
SBC #6
|
||||
S23: STA AR ; predicted accumulator result
|
||||
RTS
|
||||
|
||||
; Compare accumulator actual results to predicted results
|
||||
;
|
||||
; Return:
|
||||
; Z flag = 1 (BEQ branch) if same
|
||||
; Z flag = 0 (BNE branch) if different
|
||||
;
|
||||
COMPARE:
|
||||
LDA DA
|
||||
CMP AR
|
||||
BNE C1
|
||||
LDA DNVZC ; [7] see text
|
||||
EOR NF
|
||||
AND #$80 ; mask off N flag
|
||||
BNE C1
|
||||
LDA DNVZC ; [8] see text
|
||||
EOR VF
|
||||
AND #$40 ; mask off V flag
|
||||
BNE C1 ; [9] see text
|
||||
LDA DNVZC
|
||||
EOR ZF ; mask off Z flag
|
||||
AND #2
|
||||
BNE C1 ; [10] see text
|
||||
LDA DNVZC
|
||||
EOR CF
|
||||
AND #1 ; mask off C flag
|
||||
C1: RTS
|
||||
|
||||
; These routines store the predicted values for ADC and SBC for the 6502,
|
||||
; 65C02, and 65816 in AR, CF, NF, VF, and ZF
|
||||
|
||||
A6502: LDA VF
|
||||
;
|
||||
; since all 8 bits of the P register were stored in VF, bit 7 of VF contains
|
||||
; the N flag for NF
|
||||
;
|
||||
STA NF
|
||||
LDA HNVZC
|
||||
STA ZF
|
||||
RTS
|
||||
|
||||
S6502: JSR SUB1
|
||||
LDA HNVZC
|
||||
STA NF
|
||||
STA VF
|
||||
STA ZF
|
||||
STA CF
|
||||
RTS
|
||||
|
||||
A65C02: LDA AR
|
||||
PHP
|
||||
PLA
|
||||
STA NF
|
||||
STA ZF
|
||||
RTS
|
||||
|
||||
S65C02: JSR SUB2
|
||||
LDA AR
|
||||
PHP
|
||||
PLA
|
||||
STA NF
|
||||
STA ZF
|
||||
LDA HNVZC
|
||||
STA VF
|
||||
STA CF
|
||||
RTS
|
||||
|
||||
A65816: LDA AR
|
||||
PHP
|
||||
PLA
|
||||
STA NF
|
||||
STA ZF
|
||||
RTS
|
||||
|
||||
S65816: JSR SUB1
|
||||
LDA AR
|
||||
PHP
|
||||
PLA
|
||||
STA NF
|
||||
STA ZF
|
||||
LDA HNVZC
|
||||
STA VF
|
||||
STA CF
|
||||
RTS
|
||||
|
1522
VMachine.cpp
1522
VMachine.cpp
File diff suppressed because it is too large
Load Diff
149
VMachine.h
149
VMachine.h
@ -1,65 +1,84 @@
|
||||
#ifndef VMACHINE_H
|
||||
#define VMACHINE_H
|
||||
|
||||
#include <string>
|
||||
#include "MKCpu.h"
|
||||
#include "Memory.h"
|
||||
#include "Display.h"
|
||||
|
||||
#define WINDOWS 1
|
||||
#if defined (WINDOWS)
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#define IOREFRESH 32
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
class VMachine
|
||||
{
|
||||
public:
|
||||
VMachine();
|
||||
VMachine(string romfname, string ramfname);
|
||||
~VMachine();
|
||||
|
||||
void InitVM();
|
||||
Regs *Run();
|
||||
Regs *Run(unsigned short addr);
|
||||
Regs *Exec();
|
||||
Regs *Exec(unsigned short addr);
|
||||
Regs *Step();
|
||||
Regs *Step(unsigned short addr);
|
||||
void LoadROM(string romfname);
|
||||
void LoadRAM(string ramfname);
|
||||
unsigned short MemPeek8bit(unsigned short addr);
|
||||
void MemPoke8bit(unsigned short addr, unsigned char v);
|
||||
Regs *GetRegs();
|
||||
void SetCharIO(unsigned short addr, bool echo);
|
||||
void DisableCharIO();
|
||||
unsigned short GetCharIOAddr();
|
||||
bool GetCharIOActive();
|
||||
void ShowIO();
|
||||
void ClearScreen();
|
||||
void ScrHome();
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
MKCpu *mpCPU;
|
||||
Memory *mpROM;
|
||||
Memory *mpRAM;
|
||||
Display *mpDisp;
|
||||
unsigned short mRunAddr;
|
||||
unsigned short mCharIOAddr;
|
||||
bool mCharIOActive;
|
||||
bool mCharIO;
|
||||
|
||||
void LoadMEM(string memfname, Memory *pmem);
|
||||
void ShowDisp();
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
#ifndef VMACHINE_H
|
||||
#define VMACHINE_H
|
||||
|
||||
#include <string>
|
||||
#include <queue>
|
||||
#include "system.h"
|
||||
#include "MKCpu.h"
|
||||
#include "Memory.h"
|
||||
#include "Display.h"
|
||||
|
||||
//#define WINDOWS 1
|
||||
#if defined (WINDOWS)
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#define IOREFRESH 32
|
||||
#define OPINTERRUPT 25 // operator interrupt code (CTRL-Y)
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace MKBasic {
|
||||
|
||||
class VMachine
|
||||
{
|
||||
public:
|
||||
VMachine();
|
||||
VMachine(string romfname, string ramfname);
|
||||
~VMachine();
|
||||
|
||||
void InitVM();
|
||||
Regs *Run();
|
||||
Regs *Run(unsigned short addr);
|
||||
Regs *Exec();
|
||||
Regs *Exec(unsigned short addr);
|
||||
Regs *Step();
|
||||
Regs *Step(unsigned short addr);
|
||||
void LoadROM(string romfname);
|
||||
void LoadRAM(string ramfname);
|
||||
void LoadRAMBin(string ramfname);
|
||||
unsigned short MemPeek8bit(unsigned short addr);
|
||||
void MemPoke8bit(unsigned short addr, unsigned char v);
|
||||
Regs *GetRegs();
|
||||
void SetCharIO(unsigned short addr, bool echo);
|
||||
void DisableCharIO();
|
||||
unsigned short GetCharIOAddr();
|
||||
bool GetCharIOActive();
|
||||
void ShowIO();
|
||||
void ClearScreen();
|
||||
void ScrHome();
|
||||
bool IsAutoExec();
|
||||
void EnableROM();
|
||||
void DisableROM();
|
||||
void SetROM(unsigned short start, unsigned short end);
|
||||
void EnableROM(unsigned short start, unsigned short end);
|
||||
unsigned short GetROMBegin();
|
||||
unsigned short GetROMEnd();
|
||||
bool IsROMEnabled();
|
||||
unsigned short GetRunAddr();
|
||||
void SetOpInterrupt();
|
||||
queue<string> GetExecHistory();
|
||||
unsigned short Disassemble(unsigned short addr, char *buf);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
MKCpu *mpCPU;
|
||||
Memory *mpROM;
|
||||
Memory *mpRAM;
|
||||
Display *mpDisp;
|
||||
unsigned short mRunAddr;
|
||||
unsigned short mCharIOAddr;
|
||||
bool mCharIOActive;
|
||||
bool mCharIO;
|
||||
bool mOpInterrupt; // operator interrupt from console
|
||||
bool mAutoExec;
|
||||
|
||||
void LoadMEM(string memfname, Memory *pmem);
|
||||
void ShowDisp();
|
||||
};
|
||||
|
||||
} // namespace MKBasic
|
||||
|
||||
#endif
|
||||
|
112
bcd.c
112
bcd.c
@ -1,56 +1,56 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
unsigned char conv2bcd(unsigned short v)
|
||||
{
|
||||
unsigned char arg8 = 0;
|
||||
arg8 = (unsigned char)((v/10) << 4);
|
||||
arg8 |= ((unsigned char)(v - (v/10)*10)) & 0x0F;
|
||||
return arg8;
|
||||
}
|
||||
|
||||
char *conv24bitbin(unsigned char v)
|
||||
{
|
||||
static char retbuf[5];
|
||||
int i=3;
|
||||
|
||||
memset(retbuf, '0', 4);
|
||||
retbuf[4]=0;
|
||||
if (v == 0) return retbuf;
|
||||
while (v > 0 && i >= 0) {
|
||||
int r = v % 2;
|
||||
retbuf[i] = ((r==0) ? '0' : '1');
|
||||
v = v/2;
|
||||
i--;
|
||||
}
|
||||
|
||||
return retbuf;
|
||||
}
|
||||
|
||||
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
unsigned short v = 0;
|
||||
|
||||
for (v = 0; v < 100; v++) {
|
||||
unsigned char cv = conv2bcd(v), hinyb, lonyb;
|
||||
hinyb = (cv & 0xF0) >> 4;
|
||||
lonyb = cv & 0x0F;
|
||||
char buf_hinyb[5], buf_lonyb[5];
|
||||
strcpy(buf_hinyb, conv24bitbin(hinyb));
|
||||
strcpy(buf_lonyb, conv24bitbin(lonyb));
|
||||
printf("%d (dec) \t= %4s(%d) %4s(%d) (BCD, dec:%d)\n", v,
|
||||
buf_hinyb,
|
||||
hinyb,
|
||||
buf_lonyb,
|
||||
lonyb,
|
||||
cv);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
unsigned char conv2bcd(unsigned short v)
|
||||
{
|
||||
unsigned char arg8 = 0;
|
||||
arg8 = (unsigned char)((v/10) << 4);
|
||||
arg8 |= ((unsigned char)(v - (v/10)*10)) & 0x0F;
|
||||
return arg8;
|
||||
}
|
||||
|
||||
char *conv24bitbin(unsigned char v)
|
||||
{
|
||||
static char retbuf[5];
|
||||
int i=3;
|
||||
|
||||
memset(retbuf, '0', 4);
|
||||
retbuf[4]=0;
|
||||
if (v == 0) return retbuf;
|
||||
while (v > 0 && i >= 0) {
|
||||
int r = v % 2;
|
||||
retbuf[i] = ((r==0) ? '0' : '1');
|
||||
v = v/2;
|
||||
i--;
|
||||
}
|
||||
|
||||
return retbuf;
|
||||
}
|
||||
|
||||
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
unsigned short v = 0;
|
||||
|
||||
for (v = 0; v < 100; v++) {
|
||||
unsigned char cv = conv2bcd(v), hinyb, lonyb;
|
||||
hinyb = (cv & 0xF0) >> 4;
|
||||
lonyb = cv & 0x0F;
|
||||
char buf_hinyb[5], buf_lonyb[5];
|
||||
strcpy(buf_hinyb, conv24bitbin(hinyb));
|
||||
strcpy(buf_lonyb, conv24bitbin(lonyb));
|
||||
printf("%d (dec) \t= %4s(%d) %4s(%d) (BCD, dec:%d)\n", v,
|
||||
buf_hinyb,
|
||||
hinyb,
|
||||
buf_lonyb,
|
||||
lonyb,
|
||||
cv);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
187
bin2hex.c
Normal file
187
bin2hex.c
Normal file
@ -0,0 +1,187 @@
|
||||
/*
|
||||
*----------------------------------------------------------------------------
|
||||
* File: bin2hex.c
|
||||
*
|
||||
* Author: Marek Karcz
|
||||
*
|
||||
* Date created: 3/8/2016
|
||||
*
|
||||
* Purpose: Convert binary file to memory image definition (plain text) file.
|
||||
*----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
const int DEBUG = 0;
|
||||
const char *hdr1 = "; Created with BIN2HEX (C) Marek Karcz 2016. All rights reserved.\n";
|
||||
|
||||
char g_szInputFileName[256] = {0};
|
||||
char g_szHexFileName[256] = {0};
|
||||
int g_nStartAddr = 2048; /* $0800 */
|
||||
int g_nExecAddr = 2048; /* $0800 */
|
||||
int g_nSuppressAutoExec = 1;
|
||||
int g_nSuppressAllZeroRows = 0;
|
||||
|
||||
void ScanArgs(int argc, char *argv[]);
|
||||
void ConvertFile(void);
|
||||
|
||||
void Usage(char *prgn)
|
||||
{
|
||||
printf("\nProgram: %s\n Convert binary file to memory image definition for MKBASIC (VM65) emulator.\n\n", prgn);
|
||||
printf("Copyright: Marek Karcz 2016. All rights reserved.\n");
|
||||
printf("Free for personal and educational use.\n\n");
|
||||
printf("Usage:\n\n");
|
||||
printf(" %s -f input_fname -o output_fname [-w load_addr] [-x exec_addr] [-s] [-z]\n\n", prgn);
|
||||
printf("Where:\n\n");
|
||||
printf(" input_fname - binary file name\n");
|
||||
printf(" output_fname - output file name\n");
|
||||
printf(" load_addr - starting address to load data (default: %d)\n", g_nStartAddr);
|
||||
printf(" exec_addr - address to auto-execute code from (default: %d)\n", g_nExecAddr);
|
||||
printf(" -s - suppress auto-execute statement in output\n");
|
||||
printf(" -z - suppress data blocks with 0-s only\n");
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* bin2hex -f InputFile -o OutputFile -w StartAddr
|
||||
*/
|
||||
void ScanArgs(int argc, char *argv[])
|
||||
{
|
||||
int n = 1;
|
||||
|
||||
while (n < argc)
|
||||
{
|
||||
if (strcmp(argv[n], "-f") == 0)
|
||||
{
|
||||
n++;
|
||||
strcpy(g_szInputFileName,argv[n]);
|
||||
}
|
||||
else if (strcmp(argv[n],"-o") == 0)
|
||||
{
|
||||
n++;
|
||||
strcpy(g_szHexFileName,argv[n]);
|
||||
}
|
||||
else if (strcmp(argv[n],"-w") == 0)
|
||||
{
|
||||
n++;
|
||||
g_nStartAddr = atoi(argv[n]);
|
||||
g_nExecAddr = g_nStartAddr;
|
||||
g_nSuppressAutoExec = 0;
|
||||
}
|
||||
else if (strcmp(argv[n],"-x") == 0)
|
||||
{
|
||||
n++;
|
||||
g_nExecAddr = atoi(argv[n]);
|
||||
g_nSuppressAutoExec = 0;
|
||||
}
|
||||
else if (strcmp(argv[n],"-s") == 0)
|
||||
{
|
||||
g_nSuppressAutoExec = 1;
|
||||
}
|
||||
else if (strcmp(argv[n],"-z") == 0)
|
||||
{
|
||||
g_nSuppressAllZeroRows = 1;
|
||||
}
|
||||
|
||||
n++;
|
||||
}
|
||||
}
|
||||
|
||||
void ConvertFile(void)
|
||||
{
|
||||
FILE *fpi = NULL;
|
||||
FILE *fpo = NULL;
|
||||
unsigned char bt[17];
|
||||
char hex[80];
|
||||
int i, addr, allzero, prev_allzero;
|
||||
|
||||
addr = g_nStartAddr;
|
||||
printf("Processing...\n");
|
||||
printf("Start address: $%04x\n", addr);
|
||||
if (NULL != (fpi = fopen(g_szInputFileName,"rb")))
|
||||
{
|
||||
if (NULL != (fpo = fopen(g_szHexFileName,"w")))
|
||||
{
|
||||
time_t t = time(NULL);
|
||||
struct tm *tm = localtime(&t);
|
||||
char s[64] = {0};
|
||||
strftime(s, sizeof(s), "; %c\n", tm);
|
||||
|
||||
fputs(hdr1, fpo);
|
||||
fputs(s, fpo);
|
||||
sprintf(hex, "ADDR\n$%04x\nORG\n$%04x\n", g_nExecAddr, addr);
|
||||
if (DEBUG) printf("Adding line:\n%s\n", hex);
|
||||
fputs(hex,fpo);
|
||||
prev_allzero = 1;
|
||||
while(0 == feof(fpi) && addr <= 0xFFFF)
|
||||
{
|
||||
memset(bt, 0, 17);
|
||||
memset(hex, 0, 80);
|
||||
if (DEBUG) printf("Reading input file...");
|
||||
fread(bt, sizeof(char), 16, fpi);
|
||||
if (DEBUG) printf("done.\n");
|
||||
if (DEBUG) printf("Preparing hex string...\n");
|
||||
allzero = 1;
|
||||
for(i=0; i<16; i++)
|
||||
{
|
||||
if (DEBUG) printf("Code: %d\n", bt[i]);
|
||||
if (*hex == 0) sprintf(hex, "$%02x", bt[i]);
|
||||
else sprintf(hex, "%s $%02x", hex, bt[i]);
|
||||
if (allzero && bt[i] > 0)
|
||||
allzero = 0;
|
||||
}
|
||||
if (g_nSuppressAllZeroRows && prev_allzero && 0 == allzero) {
|
||||
char buff[20];
|
||||
sprintf (buff, "ORG\n$%04x\n", addr);
|
||||
fputs(buff, fpo);
|
||||
}
|
||||
if (0 == g_nSuppressAllZeroRows
|
||||
||
|
||||
(g_nSuppressAllZeroRows && 0 == allzero)
|
||||
)
|
||||
{
|
||||
sprintf(hex, "%s\n", hex);
|
||||
if (DEBUG) printf("Adding line: %s", hex);
|
||||
fputs(hex, fpo);
|
||||
}
|
||||
addr += 16;
|
||||
prev_allzero = allzero;
|
||||
}
|
||||
if (0 == g_nSuppressAutoExec)
|
||||
{
|
||||
memset(hex, 80, sizeof(char));
|
||||
sprintf(hex, "EXEC\n$%04x\n", g_nExecAddr);
|
||||
if (DEBUG) printf("Adding line: %s", hex);
|
||||
fputs(hex, fpo);
|
||||
}
|
||||
fclose(fpi);
|
||||
fclose(fpo);
|
||||
printf("Done.\n");
|
||||
printf("End address: $%04x\n", (addr <= 0xFFFF) ? addr : 0xFFFF);
|
||||
printf("Run address: $%04x\n", g_nExecAddr);
|
||||
}
|
||||
else
|
||||
printf("ERROR: Unable to create output file.\n");
|
||||
}
|
||||
else
|
||||
printf("ERROR: Unable to open input file.\n");
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc == 1)
|
||||
Usage(argv[0]);
|
||||
else {
|
||||
ScanArgs(argc, argv);
|
||||
if (*g_szInputFileName == 0 || *g_szHexFileName == 0)
|
||||
Usage(argv[0]);
|
||||
else
|
||||
ConvertFile();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
628
dummy.ram
628
dummy.ram
@ -1,315 +1,315 @@
|
||||
;
|
||||
; test program #1
|
||||
; address: $0200
|
||||
; load Acc with value 12
|
||||
; write Acc to address $c000 (49152)
|
||||
;
|
||||
; nop
|
||||
; nop
|
||||
; lda #$0c
|
||||
; sta $c000
|
||||
; brk
|
||||
;
|
||||
$EA $EA $A9 $0c $8D $00 $c0 $00 $00
|
||||
;
|
||||
; test program #2
|
||||
; address: $0400
|
||||
; copy 0-terminated string from
|
||||
; address $d000 to $0200
|
||||
; "Hello World!"
|
||||
;
|
||||
; ORG=$0400
|
||||
; hello:
|
||||
; ldx #0
|
||||
; loop:
|
||||
; lda $d000,x
|
||||
; beq $06 ;branch to end (+6) if A=0
|
||||
; sta $0200,x
|
||||
; inx
|
||||
; bne $f5 ; branch to loop (-11) if X<>0
|
||||
; end:
|
||||
; brk
|
||||
ORG
|
||||
$0400
|
||||
$A2 $00
|
||||
$BD $00 $d0
|
||||
$F0 $06
|
||||
$9D $00 $02
|
||||
$E8
|
||||
$D0 $F5
|
||||
$00 $00
|
||||
; data
|
||||
; address: $d000
|
||||
ORG
|
||||
$D000
|
||||
;DEC: 53248
|
||||
; "Hello World!"
|
||||
72 101 108 108 111 32 87 111 114 108 100 33 0
|
||||
;
|
||||
; test program #3 - copy Hello World! string to $0300
|
||||
; using different assembly instructions
|
||||
; address: $0500
|
||||
;
|
||||
; ORG=$0500 ;dec: 1280
|
||||
; hello:
|
||||
; lda #0
|
||||
; sta $05
|
||||
; ldx $05
|
||||
; loop:
|
||||
; lda $d000,x
|
||||
; sta $0300,x
|
||||
; beq end ;(+6)
|
||||
; inx
|
||||
; beq end ;(+3)
|
||||
; jmp loop
|
||||
; end:
|
||||
; brk
|
||||
ORG
|
||||
$0500
|
||||
;DEC: 1280
|
||||
$A9 $00
|
||||
$85 $05
|
||||
$A6 $05
|
||||
$BD $00 $d0
|
||||
$9D $00 $03
|
||||
$F0 $06
|
||||
$E8
|
||||
$F0 $03
|
||||
$4C $06 $05
|
||||
$00 $00
|
||||
;
|
||||
; test program #4
|
||||
; left-shift memory location $05 at zero page,
|
||||
; then location $06 using zero page indexed addressing,
|
||||
; then memory location $c001 (outside zero page) using absolute addressing
|
||||
; then location $c002 using indexed absolute addressing
|
||||
; and finally left-shift Acc.
|
||||
; stop after each step for debugging
|
||||
; exit loop when Acc=0
|
||||
;
|
||||
; start:
|
||||
; lda #$ff
|
||||
; ldx #$01
|
||||
; sta $05
|
||||
; sta $05,x
|
||||
; sta $c000,x
|
||||
; inx
|
||||
; sta $c000,x
|
||||
; ldx #$01
|
||||
; loop2:
|
||||
; brk
|
||||
; asl $05
|
||||
; asl $05,x
|
||||
; asl $c001
|
||||
; asl $c001,x
|
||||
; asl
|
||||
; bne loop2 ;(-15 or $f1)
|
||||
; brk
|
||||
ORG
|
||||
$0600
|
||||
$A9 $FF
|
||||
$A2 $01
|
||||
$85 $05
|
||||
$95 $05
|
||||
$9D $00 $C0
|
||||
$E8
|
||||
$9D $00 $C0
|
||||
$A2 $01
|
||||
$00 $00
|
||||
$06 $05
|
||||
$16 $05
|
||||
$0E $01 $C0
|
||||
$1E $01 $C0
|
||||
$0A
|
||||
$D0 $F1
|
||||
$00 $00
|
||||
;
|
||||
; test program #5
|
||||
; Test ORA opcode with various arguments and addressing modes.
|
||||
; At each break, the contents of Acc should equal $AA.
|
||||
;
|
||||
; start:
|
||||
; lda #$aa ;%10101010
|
||||
; sta $05
|
||||
; sta $aa
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora ($05,x)
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora $05
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora #$aa
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora $0005
|
||||
; brk
|
||||
; lda #$05
|
||||
; sta $06
|
||||
; lda #$00
|
||||
; sta $07
|
||||
; tay
|
||||
; ora ($06),y
|
||||
; brk
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora $05,x
|
||||
; brk
|
||||
; lda #$00
|
||||
; tay
|
||||
; ora $0005,y
|
||||
; brk
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora $0005,x
|
||||
; brk
|
||||
ORG
|
||||
$0700
|
||||
$A9 $AA
|
||||
$85 $05
|
||||
$85 $AA
|
||||
$A9 $00
|
||||
$AA
|
||||
$01 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$05 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$09 $AA
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$0D $05 $00
|
||||
$00 $00
|
||||
$A9 $05
|
||||
$85 $06
|
||||
$A9 $00
|
||||
$85 $07
|
||||
$A8
|
||||
$11 $06
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$AA
|
||||
$15 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$A8
|
||||
$19 $05 $00
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$AA
|
||||
$1D $05 $00
|
||||
$00 $00
|
||||
;
|
||||
; test program #6
|
||||
; Test JSR opcode.
|
||||
; After each break examine memory at $c000 and $c001.
|
||||
; After 1-st break, $c000 should equal $dd.
|
||||
; Return address-1 ($0802) should be on stack.
|
||||
; After 2-nd break, PC counter should be at $0805.
|
||||
; After 3-rd break, $c000 should equal $ee.
|
||||
; Return address-1 ($0807) should be on stack.
|
||||
; After 4-th break, PC counter should be at $080a.
|
||||
;
|
||||
; start:
|
||||
; jsr sub1
|
||||
; brk
|
||||
; jsr sub2
|
||||
; brk
|
||||
; brk
|
||||
; brk
|
||||
; sub1:
|
||||
; lda #$dd
|
||||
; sta $c000
|
||||
; brk
|
||||
; rts
|
||||
; sub2:
|
||||
; lda #$ee
|
||||
; sta $c000
|
||||
; brk
|
||||
; rts
|
||||
;
|
||||
ORG
|
||||
$0800
|
||||
$20 $0B $08
|
||||
$00 $00
|
||||
$20 $13 $08
|
||||
$00
|
||||
$00
|
||||
$00
|
||||
$A9 $DD
|
||||
$8D $00 $C0
|
||||
$00 $00
|
||||
$60
|
||||
$A9 $EE
|
||||
$8D $00 $C0
|
||||
$00 $00
|
||||
$60
|
||||
;
|
||||
; test program #7
|
||||
; Test ADC opcode.
|
||||
; Expected results:
|
||||
; First break: Acc=$01, Carry=1
|
||||
; 2-nd break: Acc=$02, Carry=1
|
||||
; 3-rd break: Acc=$22, Carry=0
|
||||
; 4-th break: Acc=$23, Carry=0
|
||||
;
|
||||
; start:
|
||||
; clc
|
||||
; lda #$ff
|
||||
; adc #$02
|
||||
; brk
|
||||
; sec
|
||||
; lda #$ff
|
||||
; adc #$02
|
||||
; brk
|
||||
; clc
|
||||
; lda #$20
|
||||
; adc #$02
|
||||
; brk
|
||||
; sec
|
||||
; lda #$20
|
||||
; adc #$02
|
||||
; brk
|
||||
;
|
||||
ORG
|
||||
$0900
|
||||
$18
|
||||
$A9 $FF
|
||||
$69 $02
|
||||
$00 $00
|
||||
$38
|
||||
$A9 $FF
|
||||
$69 $02
|
||||
$00 $00
|
||||
$18
|
||||
$A9 $20
|
||||
$69 $02
|
||||
$00 $00
|
||||
$38
|
||||
$A9 $20
|
||||
$69 $02
|
||||
$00 $00
|
||||
;
|
||||
; test program #8
|
||||
; Test ROR opcode.
|
||||
;
|
||||
; start:
|
||||
; sec
|
||||
; lda #$00
|
||||
; loop:
|
||||
; ror
|
||||
; brk
|
||||
; bcc loop ;(-5 -> $FB)
|
||||
; brk
|
||||
;
|
||||
ORG
|
||||
$0920
|
||||
$38
|
||||
$A9 $00
|
||||
$6A
|
||||
$00 $00
|
||||
$90 $FB
|
||||
$00 $00
|
||||
;
|
||||
; test program #1
|
||||
; address: $0200
|
||||
; load Acc with value 12
|
||||
; write Acc to address $c000 (49152)
|
||||
;
|
||||
; nop
|
||||
; nop
|
||||
; lda #$0c
|
||||
; sta $c000
|
||||
; brk
|
||||
;
|
||||
$EA $EA $A9 $0c $8D $00 $c0 $00 $00
|
||||
;
|
||||
; test program #2
|
||||
; address: $0400
|
||||
; copy 0-terminated string from
|
||||
; address $d000 to $0200
|
||||
; "Hello World!"
|
||||
;
|
||||
; ORG=$0400
|
||||
; hello:
|
||||
; ldx #0
|
||||
; loop:
|
||||
; lda $d000,x
|
||||
; beq $06 ;branch to end (+6) if A=0
|
||||
; sta $0200,x
|
||||
; inx
|
||||
; bne $f5 ; branch to loop (-11) if X<>0
|
||||
; end:
|
||||
; brk
|
||||
ORG
|
||||
$0400
|
||||
$A2 $00
|
||||
$BD $00 $d0
|
||||
$F0 $06
|
||||
$9D $00 $02
|
||||
$E8
|
||||
$D0 $F5
|
||||
$00 $00
|
||||
; data
|
||||
; address: $d000
|
||||
ORG
|
||||
$D000
|
||||
;DEC: 53248
|
||||
; "Hello World!"
|
||||
72 101 108 108 111 32 87 111 114 108 100 33 0
|
||||
;
|
||||
; test program #3 - copy Hello World! string to $0300
|
||||
; using different assembly instructions
|
||||
; address: $0500
|
||||
;
|
||||
; ORG=$0500 ;dec: 1280
|
||||
; hello:
|
||||
; lda #0
|
||||
; sta $05
|
||||
; ldx $05
|
||||
; loop:
|
||||
; lda $d000,x
|
||||
; sta $0300,x
|
||||
; beq end ;(+6)
|
||||
; inx
|
||||
; beq end ;(+3)
|
||||
; jmp loop
|
||||
; end:
|
||||
; brk
|
||||
ORG
|
||||
$0500
|
||||
;DEC: 1280
|
||||
$A9 $00
|
||||
$85 $05
|
||||
$A6 $05
|
||||
$BD $00 $d0
|
||||
$9D $00 $03
|
||||
$F0 $06
|
||||
$E8
|
||||
$F0 $03
|
||||
$4C $06 $05
|
||||
$00 $00
|
||||
;
|
||||
; test program #4
|
||||
; left-shift memory location $05 at zero page,
|
||||
; then location $06 using zero page indexed addressing,
|
||||
; then memory location $c001 (outside zero page) using absolute addressing
|
||||
; then location $c002 using indexed absolute addressing
|
||||
; and finally left-shift Acc.
|
||||
; stop after each step for debugging
|
||||
; exit loop when Acc=0
|
||||
;
|
||||
; start:
|
||||
; lda #$ff
|
||||
; ldx #$01
|
||||
; sta $05
|
||||
; sta $05,x
|
||||
; sta $c000,x
|
||||
; inx
|
||||
; sta $c000,x
|
||||
; ldx #$01
|
||||
; loop2:
|
||||
; brk
|
||||
; asl $05
|
||||
; asl $05,x
|
||||
; asl $c001
|
||||
; asl $c001,x
|
||||
; asl
|
||||
; bne loop2 ;(-15 or $f1)
|
||||
; brk
|
||||
ORG
|
||||
$0600
|
||||
$A9 $FF
|
||||
$A2 $01
|
||||
$85 $05
|
||||
$95 $05
|
||||
$9D $00 $C0
|
||||
$E8
|
||||
$9D $00 $C0
|
||||
$A2 $01
|
||||
$00 $00
|
||||
$06 $05
|
||||
$16 $05
|
||||
$0E $01 $C0
|
||||
$1E $01 $C0
|
||||
$0A
|
||||
$D0 $F1
|
||||
$00 $00
|
||||
;
|
||||
; test program #5
|
||||
; Test ORA opcode with various arguments and addressing modes.
|
||||
; At each break, the contents of Acc should equal $AA.
|
||||
;
|
||||
; start:
|
||||
; lda #$aa ;%10101010
|
||||
; sta $05
|
||||
; sta $aa
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora ($05,x)
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora $05
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora #$aa
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora $0005
|
||||
; brk
|
||||
; lda #$05
|
||||
; sta $06
|
||||
; lda #$00
|
||||
; sta $07
|
||||
; tay
|
||||
; ora ($06),y
|
||||
; brk
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora $05,x
|
||||
; brk
|
||||
; lda #$00
|
||||
; tay
|
||||
; ora $0005,y
|
||||
; brk
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora $0005,x
|
||||
; brk
|
||||
ORG
|
||||
$0700
|
||||
$A9 $AA
|
||||
$85 $05
|
||||
$85 $AA
|
||||
$A9 $00
|
||||
$AA
|
||||
$01 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$05 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$09 $AA
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$0D $05 $00
|
||||
$00 $00
|
||||
$A9 $05
|
||||
$85 $06
|
||||
$A9 $00
|
||||
$85 $07
|
||||
$A8
|
||||
$11 $06
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$AA
|
||||
$15 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$A8
|
||||
$19 $05 $00
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$AA
|
||||
$1D $05 $00
|
||||
$00 $00
|
||||
;
|
||||
; test program #6
|
||||
; Test JSR opcode.
|
||||
; After each break examine memory at $c000 and $c001.
|
||||
; After 1-st break, $c000 should equal $dd.
|
||||
; Return address-1 ($0802) should be on stack.
|
||||
; After 2-nd break, PC counter should be at $0805.
|
||||
; After 3-rd break, $c000 should equal $ee.
|
||||
; Return address-1 ($0807) should be on stack.
|
||||
; After 4-th break, PC counter should be at $080a.
|
||||
;
|
||||
; start:
|
||||
; jsr sub1
|
||||
; brk
|
||||
; jsr sub2
|
||||
; brk
|
||||
; brk
|
||||
; brk
|
||||
; sub1:
|
||||
; lda #$dd
|
||||
; sta $c000
|
||||
; brk
|
||||
; rts
|
||||
; sub2:
|
||||
; lda #$ee
|
||||
; sta $c000
|
||||
; brk
|
||||
; rts
|
||||
;
|
||||
ORG
|
||||
$0800
|
||||
$20 $0B $08
|
||||
$00 $00
|
||||
$20 $13 $08
|
||||
$00
|
||||
$00
|
||||
$00
|
||||
$A9 $DD
|
||||
$8D $00 $C0
|
||||
$00 $00
|
||||
$60
|
||||
$A9 $EE
|
||||
$8D $00 $C0
|
||||
$00 $00
|
||||
$60
|
||||
;
|
||||
; test program #7
|
||||
; Test ADC opcode.
|
||||
; Expected results:
|
||||
; First break: Acc=$01, Carry=1
|
||||
; 2-nd break: Acc=$02, Carry=1
|
||||
; 3-rd break: Acc=$22, Carry=0
|
||||
; 4-th break: Acc=$23, Carry=0
|
||||
;
|
||||
; start:
|
||||
; clc
|
||||
; lda #$ff
|
||||
; adc #$02
|
||||
; brk
|
||||
; sec
|
||||
; lda #$ff
|
||||
; adc #$02
|
||||
; brk
|
||||
; clc
|
||||
; lda #$20
|
||||
; adc #$02
|
||||
; brk
|
||||
; sec
|
||||
; lda #$20
|
||||
; adc #$02
|
||||
; brk
|
||||
;
|
||||
ORG
|
||||
$0900
|
||||
$18
|
||||
$A9 $FF
|
||||
$69 $02
|
||||
$00 $00
|
||||
$38
|
||||
$A9 $FF
|
||||
$69 $02
|
||||
$00 $00
|
||||
$18
|
||||
$A9 $20
|
||||
$69 $02
|
||||
$00 $00
|
||||
$38
|
||||
$A9 $20
|
||||
$69 $02
|
||||
$00 $00
|
||||
;
|
||||
; test program #8
|
||||
; Test ROR opcode.
|
||||
;
|
||||
; start:
|
||||
; sec
|
||||
; lda #$00
|
||||
; loop:
|
||||
; ror
|
||||
; brk
|
||||
; bcc loop ;(-5 -> $FB)
|
||||
; brk
|
||||
;
|
||||
ORG
|
||||
$0920
|
||||
$38
|
||||
$A9 $00
|
||||
$6A
|
||||
$00 $00
|
||||
$90 $FB
|
||||
$00 $00
|
||||
;
|
628
dummy.rom
628
dummy.rom
@ -1,315 +1,315 @@
|
||||
;
|
||||
; test program #1
|
||||
; address: $0200
|
||||
; load Acc with value 12
|
||||
; write Acc to address $c000 (49152)
|
||||
;
|
||||
; nop
|
||||
; nop
|
||||
; lda #$0c
|
||||
; sta $c000
|
||||
; brk
|
||||
;
|
||||
$EA $EA $A9 $0c $8D $00 $c0 $00 $00
|
||||
;
|
||||
; test program #2
|
||||
; address: $0400
|
||||
; copy 0-terminated string from
|
||||
; address $d000 to $0200
|
||||
; "Hello World!"
|
||||
;
|
||||
; ORG=$0400
|
||||
; hello:
|
||||
; ldx #0
|
||||
; loop:
|
||||
; lda $d000,x
|
||||
; beq $06 ;branch to end (+6) if A=0
|
||||
; sta $0200,x
|
||||
; inx
|
||||
; bne $f5 ; branch to loop (-11) if X<>0
|
||||
; end:
|
||||
; brk
|
||||
ORG
|
||||
$0400
|
||||
$A2 $00
|
||||
$BD $00 $d0
|
||||
$F0 $06
|
||||
$9D $00 $02
|
||||
$E8
|
||||
$D0 $F5
|
||||
$00 $00
|
||||
; data
|
||||
; address: $d000
|
||||
ORG
|
||||
$D000
|
||||
;DEC: 53248
|
||||
; "Hello World!"
|
||||
72 101 108 108 111 32 87 111 114 108 100 33 0
|
||||
;
|
||||
; test program #3 - copy Hello World! string to $0300
|
||||
; using different assembly instructions
|
||||
; address: $0500
|
||||
;
|
||||
; ORG=$0500 ;dec: 1280
|
||||
; hello:
|
||||
; lda #0
|
||||
; sta $05
|
||||
; ldx $05
|
||||
; loop:
|
||||
; lda $d000,x
|
||||
; sta $0300,x
|
||||
; beq end ;(+6)
|
||||
; inx
|
||||
; beq end ;(+3)
|
||||
; jmp loop
|
||||
; end:
|
||||
; brk
|
||||
ORG
|
||||
$0500
|
||||
;DEC: 1280
|
||||
$A9 $00
|
||||
$85 $05
|
||||
$A6 $05
|
||||
$BD $00 $d0
|
||||
$9D $00 $03
|
||||
$F0 $06
|
||||
$E8
|
||||
$F0 $03
|
||||
$4C $06 $05
|
||||
$00 $00
|
||||
;
|
||||
; test program #4
|
||||
; left-shift memory location $05 at zero page,
|
||||
; then location $06 using zero page indexed addressing,
|
||||
; then memory location $c001 (outside zero page) using absolute addressing
|
||||
; then location $c002 using indexed absolute addressing
|
||||
; and finally left-shift Acc.
|
||||
; stop after each step for debugging
|
||||
; exit loop when Acc=0
|
||||
;
|
||||
; start:
|
||||
; lda #$ff
|
||||
; ldx #$01
|
||||
; sta $05
|
||||
; sta $05,x
|
||||
; sta $c000,x
|
||||
; inx
|
||||
; sta $c000,x
|
||||
; ldx #$01
|
||||
; loop2:
|
||||
; brk
|
||||
; asl $05
|
||||
; asl $05,x
|
||||
; asl $c001
|
||||
; asl $c001,x
|
||||
; asl
|
||||
; bne loop2 ;(-15 or $f1)
|
||||
; brk
|
||||
ORG
|
||||
$0600
|
||||
$A9 $FF
|
||||
$A2 $01
|
||||
$85 $05
|
||||
$95 $05
|
||||
$9D $00 $C0
|
||||
$E8
|
||||
$9D $00 $C0
|
||||
$A2 $01
|
||||
$00 $00
|
||||
$06 $05
|
||||
$16 $05
|
||||
$0E $01 $C0
|
||||
$1E $01 $C0
|
||||
$0A
|
||||
$D0 $F1
|
||||
$00 $00
|
||||
;
|
||||
; test program #5
|
||||
; Test ORA opcode with various arguments and addressing modes.
|
||||
; At each break, the contents of Acc should equal $AA.
|
||||
;
|
||||
; start:
|
||||
; lda #$aa ;%10101010
|
||||
; sta $05
|
||||
; sta $aa
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora ($05,x)
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora $05
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora #$aa
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora $0005
|
||||
; brk
|
||||
; lda #$05
|
||||
; sta $06
|
||||
; lda #$00
|
||||
; sta $07
|
||||
; tay
|
||||
; ora ($06),y
|
||||
; brk
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora $05,x
|
||||
; brk
|
||||
; lda #$00
|
||||
; tay
|
||||
; ora $0005,y
|
||||
; brk
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora $0005,x
|
||||
; brk
|
||||
ORG
|
||||
$0700
|
||||
$A9 $AA
|
||||
$85 $05
|
||||
$85 $AA
|
||||
$A9 $00
|
||||
$AA
|
||||
$01 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$05 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$09 $AA
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$0D $05 $00
|
||||
$00 $00
|
||||
$A9 $05
|
||||
$85 $06
|
||||
$A9 $00
|
||||
$85 $07
|
||||
$A8
|
||||
$11 $06
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$AA
|
||||
$15 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$A8
|
||||
$19 $05 $00
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$AA
|
||||
$1D $05 $00
|
||||
$00 $00
|
||||
;
|
||||
; test program #6
|
||||
; Test JSR opcode.
|
||||
; After each break examine memory at $c000 and $c001.
|
||||
; After 1-st break, $c000 should equal $dd.
|
||||
; Return address-1 ($0802) should be on stack.
|
||||
; After 2-nd break, PC counter should be at $0805.
|
||||
; After 3-rd break, $c000 should equal $ee.
|
||||
; Return address-1 ($0807) should be on stack.
|
||||
; After 4-th break, PC counter should be at $080a.
|
||||
;
|
||||
; start:
|
||||
; jsr sub1
|
||||
; brk
|
||||
; jsr sub2
|
||||
; brk
|
||||
; brk
|
||||
; brk
|
||||
; sub1:
|
||||
; lda #$dd
|
||||
; sta $c000
|
||||
; brk
|
||||
; rts
|
||||
; sub2:
|
||||
; lda #$ee
|
||||
; sta $c000
|
||||
; brk
|
||||
; rts
|
||||
;
|
||||
ORG
|
||||
$0800
|
||||
$20 $0B $08
|
||||
$00 $00
|
||||
$20 $13 $08
|
||||
$00
|
||||
$00
|
||||
$00
|
||||
$A9 $DD
|
||||
$8D $00 $C0
|
||||
$00 $00
|
||||
$60
|
||||
$A9 $EE
|
||||
$8D $00 $C0
|
||||
$00 $00
|
||||
$60
|
||||
;
|
||||
; test program #7
|
||||
; Test ADC opcode.
|
||||
; Expected results:
|
||||
; First break: Acc=$01, Carry=1
|
||||
; 2-nd break: Acc=$02, Carry=1
|
||||
; 3-rd break: Acc=$22, Carry=0
|
||||
; 4-th break: Acc=$23, Carry=0
|
||||
;
|
||||
; start:
|
||||
; clc
|
||||
; lda #$ff
|
||||
; adc #$02
|
||||
; brk
|
||||
; sec
|
||||
; lda #$ff
|
||||
; adc #$02
|
||||
; brk
|
||||
; clc
|
||||
; lda #$20
|
||||
; adc #$02
|
||||
; brk
|
||||
; sec
|
||||
; lda #$20
|
||||
; adc #$02
|
||||
; brk
|
||||
;
|
||||
ORG
|
||||
$0900
|
||||
$18
|
||||
$A9 $FF
|
||||
$69 $02
|
||||
$00 $00
|
||||
$38
|
||||
$A9 $FF
|
||||
$69 $02
|
||||
$00 $00
|
||||
$18
|
||||
$A9 $20
|
||||
$69 $02
|
||||
$00 $00
|
||||
$38
|
||||
$A9 $20
|
||||
$69 $02
|
||||
$00 $00
|
||||
;
|
||||
; test program #8
|
||||
; Test ROR opcode.
|
||||
;
|
||||
; start:
|
||||
; sec
|
||||
; lda #$00
|
||||
; loop:
|
||||
; ror
|
||||
; brk
|
||||
; bcc loop ;(-5 -> $FB)
|
||||
; brk
|
||||
;
|
||||
ORG
|
||||
$0920
|
||||
$38
|
||||
$A9 $00
|
||||
$6A
|
||||
$00 $00
|
||||
$90 $FB
|
||||
$00 $00
|
||||
;
|
||||
; test program #1
|
||||
; address: $0200
|
||||
; load Acc with value 12
|
||||
; write Acc to address $c000 (49152)
|
||||
;
|
||||
; nop
|
||||
; nop
|
||||
; lda #$0c
|
||||
; sta $c000
|
||||
; brk
|
||||
;
|
||||
$EA $EA $A9 $0c $8D $00 $c0 $00 $00
|
||||
;
|
||||
; test program #2
|
||||
; address: $0400
|
||||
; copy 0-terminated string from
|
||||
; address $d000 to $0200
|
||||
; "Hello World!"
|
||||
;
|
||||
; ORG=$0400
|
||||
; hello:
|
||||
; ldx #0
|
||||
; loop:
|
||||
; lda $d000,x
|
||||
; beq $06 ;branch to end (+6) if A=0
|
||||
; sta $0200,x
|
||||
; inx
|
||||
; bne $f5 ; branch to loop (-11) if X<>0
|
||||
; end:
|
||||
; brk
|
||||
ORG
|
||||
$0400
|
||||
$A2 $00
|
||||
$BD $00 $d0
|
||||
$F0 $06
|
||||
$9D $00 $02
|
||||
$E8
|
||||
$D0 $F5
|
||||
$00 $00
|
||||
; data
|
||||
; address: $d000
|
||||
ORG
|
||||
$D000
|
||||
;DEC: 53248
|
||||
; "Hello World!"
|
||||
72 101 108 108 111 32 87 111 114 108 100 33 0
|
||||
;
|
||||
; test program #3 - copy Hello World! string to $0300
|
||||
; using different assembly instructions
|
||||
; address: $0500
|
||||
;
|
||||
; ORG=$0500 ;dec: 1280
|
||||
; hello:
|
||||
; lda #0
|
||||
; sta $05
|
||||
; ldx $05
|
||||
; loop:
|
||||
; lda $d000,x
|
||||
; sta $0300,x
|
||||
; beq end ;(+6)
|
||||
; inx
|
||||
; beq end ;(+3)
|
||||
; jmp loop
|
||||
; end:
|
||||
; brk
|
||||
ORG
|
||||
$0500
|
||||
;DEC: 1280
|
||||
$A9 $00
|
||||
$85 $05
|
||||
$A6 $05
|
||||
$BD $00 $d0
|
||||
$9D $00 $03
|
||||
$F0 $06
|
||||
$E8
|
||||
$F0 $03
|
||||
$4C $06 $05
|
||||
$00 $00
|
||||
;
|
||||
; test program #4
|
||||
; left-shift memory location $05 at zero page,
|
||||
; then location $06 using zero page indexed addressing,
|
||||
; then memory location $c001 (outside zero page) using absolute addressing
|
||||
; then location $c002 using indexed absolute addressing
|
||||
; and finally left-shift Acc.
|
||||
; stop after each step for debugging
|
||||
; exit loop when Acc=0
|
||||
;
|
||||
; start:
|
||||
; lda #$ff
|
||||
; ldx #$01
|
||||
; sta $05
|
||||
; sta $05,x
|
||||
; sta $c000,x
|
||||
; inx
|
||||
; sta $c000,x
|
||||
; ldx #$01
|
||||
; loop2:
|
||||
; brk
|
||||
; asl $05
|
||||
; asl $05,x
|
||||
; asl $c001
|
||||
; asl $c001,x
|
||||
; asl
|
||||
; bne loop2 ;(-15 or $f1)
|
||||
; brk
|
||||
ORG
|
||||
$0600
|
||||
$A9 $FF
|
||||
$A2 $01
|
||||
$85 $05
|
||||
$95 $05
|
||||
$9D $00 $C0
|
||||
$E8
|
||||
$9D $00 $C0
|
||||
$A2 $01
|
||||
$00 $00
|
||||
$06 $05
|
||||
$16 $05
|
||||
$0E $01 $C0
|
||||
$1E $01 $C0
|
||||
$0A
|
||||
$D0 $F1
|
||||
$00 $00
|
||||
;
|
||||
; test program #5
|
||||
; Test ORA opcode with various arguments and addressing modes.
|
||||
; At each break, the contents of Acc should equal $AA.
|
||||
;
|
||||
; start:
|
||||
; lda #$aa ;%10101010
|
||||
; sta $05
|
||||
; sta $aa
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora ($05,x)
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora $05
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora #$aa
|
||||
; brk
|
||||
; lda #$00
|
||||
; ora $0005
|
||||
; brk
|
||||
; lda #$05
|
||||
; sta $06
|
||||
; lda #$00
|
||||
; sta $07
|
||||
; tay
|
||||
; ora ($06),y
|
||||
; brk
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora $05,x
|
||||
; brk
|
||||
; lda #$00
|
||||
; tay
|
||||
; ora $0005,y
|
||||
; brk
|
||||
; lda #$00
|
||||
; tax
|
||||
; ora $0005,x
|
||||
; brk
|
||||
ORG
|
||||
$0700
|
||||
$A9 $AA
|
||||
$85 $05
|
||||
$85 $AA
|
||||
$A9 $00
|
||||
$AA
|
||||
$01 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$05 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$09 $AA
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$0D $05 $00
|
||||
$00 $00
|
||||
$A9 $05
|
||||
$85 $06
|
||||
$A9 $00
|
||||
$85 $07
|
||||
$A8
|
||||
$11 $06
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$AA
|
||||
$15 $05
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$A8
|
||||
$19 $05 $00
|
||||
$00 $00
|
||||
$A9 $00
|
||||
$AA
|
||||
$1D $05 $00
|
||||
$00 $00
|
||||
;
|
||||
; test program #6
|
||||
; Test JSR opcode.
|
||||
; After each break examine memory at $c000 and $c001.
|
||||
; After 1-st break, $c000 should equal $dd.
|
||||
; Return address-1 ($0802) should be on stack.
|
||||
; After 2-nd break, PC counter should be at $0805.
|
||||
; After 3-rd break, $c000 should equal $ee.
|
||||
; Return address-1 ($0807) should be on stack.
|
||||
; After 4-th break, PC counter should be at $080a.
|
||||
;
|
||||
; start:
|
||||
; jsr sub1
|
||||
; brk
|
||||
; jsr sub2
|
||||
; brk
|
||||
; brk
|
||||
; brk
|
||||
; sub1:
|
||||
; lda #$dd
|
||||
; sta $c000
|
||||
; brk
|
||||
; rts
|
||||
; sub2:
|
||||
; lda #$ee
|
||||
; sta $c000
|
||||
; brk
|
||||
; rts
|
||||
;
|
||||
ORG
|
||||
$0800
|
||||
$20 $0B $08
|
||||
$00 $00
|
||||
$20 $13 $08
|
||||
$00
|
||||
$00
|
||||
$00
|
||||
$A9 $DD
|
||||
$8D $00 $C0
|
||||
$00 $00
|
||||
$60
|
||||
$A9 $EE
|
||||
$8D $00 $C0
|
||||
$00 $00
|
||||
$60
|
||||
;
|
||||
; test program #7
|
||||
; Test ADC opcode.
|
||||
; Expected results:
|
||||
; First break: Acc=$01, Carry=1
|
||||
; 2-nd break: Acc=$02, Carry=1
|
||||
; 3-rd break: Acc=$22, Carry=0
|
||||
; 4-th break: Acc=$23, Carry=0
|
||||
;
|
||||
; start:
|
||||
; clc
|
||||
; lda #$ff
|
||||
; adc #$02
|
||||
; brk
|
||||
; sec
|
||||
; lda #$ff
|
||||
; adc #$02
|
||||
; brk
|
||||
; clc
|
||||
; lda #$20
|
||||
; adc #$02
|
||||
; brk
|
||||
; sec
|
||||
; lda #$20
|
||||
; adc #$02
|
||||
; brk
|
||||
;
|
||||
ORG
|
||||
$0900
|
||||
$18
|
||||
$A9 $FF
|
||||
$69 $02
|
||||
$00 $00
|
||||
$38
|
||||
$A9 $FF
|
||||
$69 $02
|
||||
$00 $00
|
||||
$18
|
||||
$A9 $20
|
||||
$69 $02
|
||||
$00 $00
|
||||
$38
|
||||
$A9 $20
|
||||
$69 $02
|
||||
$00 $00
|
||||
;
|
||||
; test program #8
|
||||
; Test ROR opcode.
|
||||
;
|
||||
; start:
|
||||
; sec
|
||||
; lda #$00
|
||||
; loop:
|
||||
; ror
|
||||
; brk
|
||||
; bcc loop ;(-5 -> $FB)
|
||||
; brk
|
||||
;
|
||||
ORG
|
||||
$0920
|
||||
$38
|
||||
$A9 $00
|
||||
$6A
|
||||
$00 $00
|
||||
$90 $FB
|
||||
$00 $00
|
||||
;
|
8723
eh_basic.asm
Normal file
8723
eh_basic.asm
Normal file
File diff suppressed because it is too large
Load Diff
8724
eh_basic_kow.asm
Normal file
8724
eh_basic_kow.asm
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
10 LET A=1
|
||||
20 PR A;") HELLO WORLD FROM MKHBC!"
|
||||
30 LET A=A+1
|
||||
40 IF A=0 THEN END
|
||||
50 GOTO 20
|
||||
10 LET A=0
|
||||
20 PR A;") HELLO WORLD FROM MKHBC!"
|
||||
30 LET A=A+1
|
||||
40 IF A>100 THEN END
|
||||
50 GOTO 20
|
||||
|
49
makefile
Normal file
49
makefile
Normal file
@ -0,0 +1,49 @@
|
||||
# Project: MKBasic
|
||||
|
||||
CPP = g++ -D__DEBUG__ -DLINUX
|
||||
CC = gcc -D__DEBUG__
|
||||
OBJ = main.o VMachine.o MKBasic.o MKCpu.o Memory.o Display.o MKGenException.o
|
||||
LINKOBJ = main.o VMachine.o MKBasic.o MKCpu.o Memory.o Display.o MKGenException.o
|
||||
BIN = mkbasic
|
||||
LIBS = -static-libgcc -m32 -g3 -ltermcap
|
||||
CLIBS = -static-libgcc -m32 -g3
|
||||
INCS =
|
||||
CXXINCS =
|
||||
CXXFLAGS = $(CXXINCS) -m32 -std=c++0x -Wall -pedantic -g3
|
||||
#CFLAGS = $(INCS) -m32 -std=c++0x -Wall -pedantic -g3
|
||||
CFLAGS = $(INCS) -m32 -Wall -pedantic -g3
|
||||
RM = rm -f
|
||||
|
||||
.PHONY: all all-before all-after clean clean-custom
|
||||
|
||||
all: all-before $(BIN) bin2hex all-after
|
||||
|
||||
clean: clean-custom
|
||||
${RM} $(OBJ) $(BIN) bin2hex
|
||||
|
||||
$(BIN): $(OBJ)
|
||||
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
|
||||
|
||||
main.o: main.cpp
|
||||
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)
|
||||
|
||||
VMachine.o: VMachine.cpp
|
||||
$(CPP) -c VMachine.cpp -o VMachine.o $(CXXFLAGS)
|
||||
|
||||
MKBasic.o: MKBasic.cpp
|
||||
$(CPP) -c MKBasic.cpp -o MKBasic.o $(CXXFLAGS)
|
||||
|
||||
MKCpu.o: MKCpu.cpp
|
||||
$(CPP) -c MKCpu.cpp -o MKCpu.o $(CXXFLAGS)
|
||||
|
||||
Memory.o: Memory.cpp
|
||||
$(CPP) -c Memory.cpp -o Memory.o $(CXXFLAGS)
|
||||
|
||||
Display.o: Display.cpp
|
||||
$(CPP) -c Display.cpp -o Display.o $(CXXFLAGS)
|
||||
|
||||
bin2hex: bin2hex.c
|
||||
$(CC) bin2hex.c -o bin2hex $(CFLAGS) $(CLIBS)
|
||||
|
||||
MKGenException.o: MKGenException.cpp
|
||||
$(CPP) -c MKGenException.cpp -o MKGenException.o $(CXXFLAGS)
|
58
makefile.mingw
Normal file
58
makefile.mingw
Normal file
@ -0,0 +1,58 @@
|
||||
# Project: MKBasic
|
||||
# Makefile created by Dev-C++ 5.11
|
||||
# and modified for standalone MINGW compiler installation.
|
||||
|
||||
CPP = g++.exe -D__DEBUG__
|
||||
CC = gcc.exe -D__DEBUG__
|
||||
WINDRES = windres.exe
|
||||
OBJ = main.o VMachine.o MKBasic.o MKCpu.o Memory.o Display.o MKGenException.o
|
||||
OBJ2 = bin2hex.o
|
||||
LINKOBJ = main.o VMachine.o MKBasic.o MKCpu.o Memory.o Display.o MKGenException.o
|
||||
LINKOBJ2 = bin2hex.o
|
||||
LIBS = -L"C:\mingw-w64\x86_64-5.3.0\mingw64\x86_64-w64-mingw32/lib" -L"C:\mingw-w64\x86_64-5.3.0\mingw64\x86_64-w64-mingw32/lib" -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic
|
||||
INCS = -I"C:\mingw-w64\x86_64-5.3.0\mingw64/include" -I"C:\mingw-w64\x86_64-5.3.0\mingw64\x86_64-w64-mingw32/include" -I"C:\mingw-w64\x86_64-5.3.0\mingw64\lib\gcc\x86_64-w64-mingw32\5.3.0/include"
|
||||
CXXINCS = -I"C:\mingw-w64\x86_64-5.3.0\mingw64/include" -I"C:\mingw-w64\x86_64-5.3.0\mingw64\x86_64-w64-mingw32/include" -I"C:\mingw-w64\x86_64-5.3.0\mingw64\lib\gcc\x86_64-w64-mingw32\5.3.0/include"
|
||||
BIN = mkbasic.exe
|
||||
BIN2 = bin2hex.exe
|
||||
CXXFLAGS = $(CXXINCS) -std=c++11 -Wall -Wextra -pedantic -g3
|
||||
CFLAGS = $(INCS) -std=c++11 -Wall -Wextra -pedantic -g3
|
||||
CXXFLAGS2 = $(CXXINCS)
|
||||
CFLAGS2 = $(INCS)
|
||||
RM = del /f
|
||||
|
||||
.PHONY: all all-before all-after clean clean-custom
|
||||
|
||||
all: all-before $(BIN) $(BIN2) all-after
|
||||
|
||||
clean: clean-custom
|
||||
${RM} $(OBJ) $(OBJ2) $(BIN) $(BIN2)
|
||||
|
||||
$(BIN): $(OBJ)
|
||||
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
|
||||
|
||||
main.o: main.cpp
|
||||
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)
|
||||
|
||||
VMachine.o: VMachine.cpp
|
||||
$(CPP) -c VMachine.cpp -o VMachine.o $(CXXFLAGS)
|
||||
|
||||
MKBasic.o: MKBasic.cpp
|
||||
$(CPP) -c MKBasic.cpp -o MKBasic.o $(CXXFLAGS)
|
||||
|
||||
MKCpu.o: MKCpu.cpp
|
||||
$(CPP) -c MKCpu.cpp -o MKCpu.o $(CXXFLAGS)
|
||||
|
||||
Memory.o: Memory.cpp
|
||||
$(CPP) -c Memory.cpp -o Memory.o $(CXXFLAGS)
|
||||
|
||||
Display.o: Display.cpp
|
||||
$(CPP) -c Display.cpp -o Display.o $(CXXFLAGS)
|
||||
|
||||
MKGenException.o: MKGenException.cpp
|
||||
$(CPP) -c MKGenException.cpp -o MKGenException.o $(CXXFLAGS)
|
||||
|
||||
$(BIN2): $(OBJ2)
|
||||
$(CC) $(LINKOBJ2) -o $(BIN2) $(LIBS)
|
||||
|
||||
bin2hex.o: bin2hex.c
|
||||
$(CC) -c bin2hex.c -o bin2hex.o $(CFLAGS2)
|
4
makeming.bat
Normal file
4
makeming.bat
Normal file
@ -0,0 +1,4 @@
|
||||
rem to make project on win64 with mingw
|
||||
rem run in mingw console
|
||||
|
||||
mingw32-make -f makefile.mingw clean all
|
1051
microchess.asm
Normal file
1051
microchess.asm
Normal file
File diff suppressed because it is too large
Load Diff
BIN
microchess.bin
Normal file
BIN
microchess.bin
Normal file
Binary file not shown.
16
microchess.cfg
Normal file
16
microchess.cfg
Normal file
@ -0,0 +1,16 @@
|
||||
MEMORY {
|
||||
RAM0: start = $0000, size = $0400, fill = yes;
|
||||
RAM1: start = $0400, size = $0620, fill = yes;
|
||||
RAM2: start = $0A20, size = $F3E0, fill = yes;
|
||||
ROM1: start = $FE00, size = $1ED, fill = yes;
|
||||
ROM2: start = $FFED, size = $12;
|
||||
}
|
||||
|
||||
SEGMENTS {
|
||||
BEGN: load = RAM0, type = rw;
|
||||
CODE: load = RAM1, type = rw;
|
||||
DATA: load = RAM2, type = rw;
|
||||
KERN: load = ROM1, type = ro;
|
||||
VECT: load = ROM2, type = ro;
|
||||
}
|
||||
|
114
microchess.dat
Normal file
114
microchess.dat
Normal file
@ -0,0 +1,114 @@
|
||||
; Created with BIN2HEX (C) Marek Karcz 2016. All rights reserved.
|
||||
; 03/13/16 00:08:59
|
||||
ADDR
|
||||
$0400
|
||||
ORG
|
||||
$0000
|
||||
ORG
|
||||
$0400
|
||||
$a9 $00 $85 $b7 $4c $09 $04 $ff $ff $d8 $a2 $ff $9a $a2 $c8 $86
|
||||
$b2 $20 $92 $07 $20 $7d $08 $c9 $43 $d0 $17 $a9 $ff $8d $07 $04
|
||||
$a2 $1f $bd $20 $0a $95 $50 $ca $10 $f8 $a2 $1b $86 $2c $a9 $cc
|
||||
$d0 $23 $c9 $45 $d0 $13 $a9 $ff $8d $07 $04 $20 $db $05 $38 $a9
|
||||
$01 $e5 $b7 $85 $b7 $a9 $ee $d0 $0c $c9 $40 $d0 $10 $a9 $ff $8d
|
||||
$07 $04 $20 $cf $06 $85 $4b $85 $4a $85 $49 $d0 $ac $c9 $0d $d0
|
||||
$0d $48 $a9 $ff $8d $07 $04 $68 $20 $75 $06 $4c $17 $05 $c9 $41
|
||||
$f0 $0a $48 $a9 $00 $8d $07 $04 $68 $4c $10 $05 $60 $a6 $b5 $30
|
||||
$59 $a5 $b0 $f0 $08 $e0 $08 $d0 $04 $c5 $26 $f0 $2e $f6 $23 $c9
|
||||
$01 $d0 $02 $f6 $23 $50 $1e $a0 $0f $a5 $b1 $d9 $60 $00 $f0 $03
|
||||
$88 $10 $f8 $b9 $51 $0a $d5 $24 $90 $04 $94 $26 $95 $24 $18 $08
|
||||
$75 $25 $95 $25 $28 $e0 $04 $f0 $03 $30 $2e $60 $a5 $28 $85 $2d
|
||||
$a9 $00 $85 $b5 $20 $75 $06 $20 $db $05 $20 $29 $05 $20 $db $05
|
||||
$a9 $08 $85 $b5 $20 $5b $06 $4c $2c $07 $e0 $f9 $d0 $0b $a5 $60
|
||||
$c5 $b1 $d0 $04 $a9 $00 $85 $b4 $60 $50 $fd $a0 $07 $a5 $b1 $d9
|
||||
$60 $00 $f0 $05 $88 $f0 $f1 $10 $f6 $b9 $51 $0a $d5 $22 $90 $02
|
||||
$95 $22 $c6 $b5 $a9 $fb $c5 $b5 $f0 $03 $20 $4f $06 $e6 $b5 $60
|
||||
$c9 $08 $b0 $12 $20 $1c $07 $a2 $1f $b5 $50 $c5 $4a $f0 $03 $ca
|
||||
$10 $f7 $86 $4b $86 $b0 $4c $09 $04 $a2 $10 $a9 $00 $95 $2e $ca
|
||||
$10 $fb $a9 $10 $85 $b0 $c6 $b0 $10 $01 $60 $20 $48 $06 $a4 $b0
|
||||
$a2 $08 $86 $b6 $c0 $08 $10 $41 $c0 $06 $10 $2e $c0 $04 $10 $1f
|
||||
$c0 $01 $f0 $09 $10 $0e $20 $b7 $05 $d0 $fb $f0 $d9 $20 $c5 $05
|
||||
$d0 $fb $f0 $d2 $a2 $04 $86 $b6 $20 $c5 $05 $d0 $fb $f0 $c7 $20
|
||||
$c5 $05 $a5 $b6 $c9 $04 $d0 $f7 $f0 $bc $a2 $10 $86 $b6 $20 $b7
|
||||
$05 $a5 $b6 $c9 $08 $d0 $f7 $f0 $ad $a2 $06 $86 $b6 $20 $f3 $05
|
||||
$50 $05 $30 $03 $20 $7d $04 $20 $48 $06 $c6 $b6 $a5 $b6 $c9 $05
|
||||
$f0 $eb $20 $f3 $05 $70 $8f $30 $8d $20 $7d $04 $a5 $b1 $29 $f0
|
||||
$c9 $20 $f0 $ee $4c $36 $05 $20 $f3 $05 $30 $03 $20 $7d $04 $20
|
||||
$48 $06 $c6 $b6 $60 $20 $f3 $05 $90 $02 $50 $f9 $30 $07 $08 $20
|
||||
$7d $04 $28 $50 $f0 $20 $48 $06 $c6 $b6 $60 $a2 $0f $38 $b4 $60
|
||||
$a9 $77 $f5 $50 $95 $60 $94 $50 $38 $a9 $77 $f5 $50 $95 $50 $ca
|
||||
$10 $eb $60 $a5 $b1 $a6 $b6 $18 $7d $40 $0a $85 $b1 $29 $88 $d0
|
||||
$42 $a5 $b1 $a2 $20 $ca $30 $0e $d5 $50 $d0 $f9 $e0 $10 $30 $33
|
||||
$a9 $7f $69 $01 $70 $01 $b8 $a5 $b5 $30 $24 $c9 $08 $10 $20 $48
|
||||
$08 $a9 $f9 $85 $b5 $85 $b4 $20 $75 $06 $20 $db $05 $20 $32 $05
|
||||
$20 $58 $06 $28 $68 $85 $b5 $a5 $b4 $30 $04 $38 $a9 $ff $60 $18
|
||||
$a9 $00 $60 $a9 $ff $18 $b8 $60 $a6 $b0 $b5 $50 $85 $b1 $60 $20
|
||||
$75 $06 $20 $db $05 $20 $32 $05 $20 $db $05 $ba $86 $b3 $a6 $b2
|
||||
$9a $68 $85 $b6 $68 $85 $b0 $aa $68 $95 $50 $68 $aa $68 $85 $b1
|
||||
$95 $50 $4c $9a $06 $ba $86 $b3 $a6 $b2 $9a $a5 $b1 $48 $a8 $a2
|
||||
$1f $d5 $50 $f0 $03 $ca $10 $f9 $a9 $cc $95 $50 $8a $48 $a6 $b0
|
||||
$b5 $50 $94 $50 $48 $8a $48 $a5 $b6 $48 $ba $86 $b2 $a6 $b3 $9a
|
||||
$60 $a4 $24 $ec $51 $0a $d0 $04 $a9 $00 $f0 $0a $a6 $23 $d0 $06
|
||||
$a6 $3e $d0 $02 $a9 $ff $a2 $04 $86 $b5 $c5 $4a $90 $0c $f0 $0a
|
||||
$85 $4a $a5 $b0 $85 $4b $a5 $b1 $85 $49 $a9 $2e $4c $8f $08 $a6
|
||||
$2c $30 $1c $a5 $49 $dd $61 $0a $d0 $11 $ca $bd $61 $0a $85 $4b
|
||||
$ca $bd $61 $0a $85 $49 $ca $86 $2c $d0 $1c $a9 $ff $85 $2c $a2
|
||||
$0c $86 $b5 $86 $4a $a2 $14 $20 $2b $05 $a2 $04 $86 $b5 $20 $29
|
||||
$05 $a6 $4a $e0 $0f $90 $12 $a6 $4b $b5 $50 $85 $4a $86 $b0 $a5
|
||||
$49 $85 $b1 $20 $75 $06 $4c $09 $04 $a9 $ff $60 $a2 $04 $06 $49
|
||||
$26 $4a $ca $d0 $f9 $05 $49 $85 $49 $85 $b1 $60 $18 $a9 $80 $65
|
||||
$2b $65 $3c $65 $3d $65 $21 $65 $2f $38 $e5 $40 $e5 $41 $e5 $22
|
||||
$e5 $20 $e5 $2e $e5 $3f $e5 $23 $b0 $02 $a9 $00 $4a $18 $69 $40
|
||||
$65 $3c $65 $3d $38 $e5 $24 $4a $18 $69 $90 $65 $2d $65 $2d $65
|
||||
$2d $65 $2d $65 $21 $38 $e5 $24 $e5 $24 $e5 $25 $e5 $25 $e5 $20
|
||||
$a6 $b1 $e0 $33 $f0 $16 $e0 $34 $f0 $12 $e0 $22 $f0 $0e $e0 $25
|
||||
$f0 $0a $a6 $b0 $f0 $09 $b4 $50 $c0 $10 $10 $03 $18 $69 $02 $4c
|
||||
$a1 $06 $ad $07 $04 $d0 $01 $60 $20 $37 $08 $20 $5b $08 $20 $42
|
||||
$08 $a0 $00 $20 $09 $08 $a9 $7c $20 $8f $08 $a2 $1f $98 $d5 $50
|
||||
$f0 $40 $ca $10 $f8 $98 $29 $01 $85 $4c $98 $4a $4a $4a $4a $29
|
||||
$01 $18 $65 $4c $29 $01 $d0 $03 $a9 $2a $2c $a9 $20 $20 $8f $08
|
||||
$20 $8f $08 $c8 $98 $29 $08 $f0 $cd $a9 $7c $20 $8f $08 $20 $54
|
||||
$08 $20 $37 $08 $20 $09 $08 $18 $98 $69 $08 $a8 $c0 $80 $f0 $2b
|
||||
$d0 $b4 $a5 $b7 $f0 $05 $bd $0d $09 $d0 $03 $bd $fd $08 $20 $8f
|
||||
$08 $bd $2d $09 $20 $8f $08 $d0 $ca $8a $48 $a2 $19 $a9 $2d $20
|
||||
$8f $08 $ca $d0 $fa $68 $aa $20 $37 $08 $60 $20 $42 $08 $a5 $4b
|
||||
$20 $9b $08 $a9 $20 $20 $8f $08 $a5 $4a $20 $9b $08 $a9 $20 $20
|
||||
$8f $08 $a5 $49 $20 $9b $08 $a9 $0d $20 $8f $08 $a9 $0a $20 $8f
|
||||
$08 $60 $a2 $00 $a9 $20 $20 $8f $08 $8a $20 $9b $08 $e8 $e0 $08
|
||||
$d0 $f2 $f0 $e3 $98 $29 $70 $20 $9b $08 $60 $86 $f6 $85 $f7 $84
|
||||
$f8 $ad $08 $04 $f0 $0b $a9 $c1 $85 $e0 $a9 $08 $85 $e1 $20 $f3
|
||||
$ff $a9 $00 $8d $08 $04 $a6 $f6 $a5 $f7 $a4 $f8 $60 $a9 $3f $20
|
||||
$8f $08 $20 $8b $08 $20 $8f $08 $29 $4f $60 $20 $ed $ff $60 $86
|
||||
$f6 $85 $f7 $20 $f0 $ff $a6 $f6 $a5 $f7 $60 $48 $4a $4a $4a $4a
|
||||
$20 $a4 $08 $68 $84 $f8 $29 $0f $a8 $b9 $b1 $08 $a4 $f8 $4c $8f
|
||||
$08 $30 $31 $32 $33 $34 $35 $36 $37 $38 $39 $41 $42 $43 $44 $45
|
||||
$46 $4d $69 $63 $72 $6f $43 $68 $65 $73 $73 $20 $28 $63 $29 $20
|
||||
$31 $39 $39 $36 $2d $32 $30 $30 $32 $20 $50 $65 $74 $65 $72 $20
|
||||
$4a $65 $6e $6e $69 $6e $67 $73 $2c $20 $70 $65 $74 $65 $72 $6a
|
||||
$40 $62 $65 $6e $6c $6f $2e $63 $6f $6d $0d $0a $00 $57 $57 $57
|
||||
$57 $57 $57 $57 $57 $57 $57 $57 $57 $57 $57 $57 $57 $42 $42 $42
|
||||
$42 $42 $42 $42 $42 $42 $42 $42 $42 $42 $42 $42 $42 $57 $57 $57
|
||||
$57 $57 $57 $57 $57 $57 $57 $57 $57 $57 $57 $57 $57 $4b $51 $43
|
||||
$43 $42 $42 $52 $52 $50 $50 $50 $50 $50 $50 $50 $50 $4b $51 $43
|
||||
$43 $42 $42 $52 $52 $50 $50 $50 $50 $50 $50 $50 $50 $00 $00 $00
|
||||
ORG
|
||||
$0a20
|
||||
$03 $04 $00 $07 $02 $05 $01 $06 $10 $17 $11 $16 $12 $15 $14 $13
|
||||
$73 $74 $70 $77 $72 $75 $71 $76 $60 $67 $61 $66 $62 $65 $64 $63
|
||||
$00 $f0 $ff $01 $10 $11 $0f $ef $f1 $df $e1 $ee $f2 $12 $0e $1f
|
||||
$21 $0b $0a $06 $06 $04 $04 $04 $04 $02 $02 $02 $02 $02 $02 $02
|
||||
$02 $99 $25 $0b $25 $01 $00 $33 $25 $07 $36 $34 $0d $34 $34 $0e
|
||||
$52 $25 $0d $45 $35 $04 $55 $22 $06 $43 $33 $0f $cc $00 $00 $00
|
||||
ORG
|
||||
$fe00
|
||||
$ad $00 $e0 $60 $8d $00 $e0 $60 $a0 $00 $a5 $e1 $48 $b1 $e0 $f0
|
||||
$0b $20 $04 $fe $c8 $d0 $f6 $e6 $e1 $4c $0d $fe $68 $85 $e1 $60
|
||||
ORG
|
||||
$ffe0
|
||||
$00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $4c $00 $fe
|
||||
$4c $04 $fe $4c $08 $fe $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
|
||||
IOADDR
|
||||
$E000
|
||||
ENIO
|
||||
EXEC
|
||||
$0400
|
1033
microchess.lst
Normal file
1033
microchess.lst
Normal file
File diff suppressed because it is too large
Load Diff
BIN
microchess.o
Normal file
BIN
microchess.o
Normal file
Binary file not shown.
10
numbers.bas
Normal file
10
numbers.bas
Normal file
@ -0,0 +1,10 @@
|
||||
10 LET A=0
|
||||
15 LET B=0
|
||||
20 PRINT A;" ";
|
||||
30 LET A=A+1
|
||||
32 LET B=B+1
|
||||
35 IF B>9 THEN GOTO 60
|
||||
40 IF A>1000 THEN END
|
||||
50 GOTO 20
|
||||
60 PRINT
|
||||
70 GOTO 15
|
196
t_adc_bcd_01.65s
196
t_adc_bcd_01.65s
@ -1,99 +1,99 @@
|
||||
; ADC, test decimal mode.
|
||||
;
|
||||
; NV-BDIZC
|
||||
; ??1110??
|
||||
;
|
||||
; The results I got on Rockwell 6502 AP
|
||||
;
|
||||
; 00 + 00 and C=0 gives 00 and N=0 V=0 Z=1 C=0 (3A)
|
||||
; 79 + 00 and C=1 gives 80 and N=1 V=1 Z=0 C=0 (F8)
|
||||
; 24 + 56 and C=0 gives 80 and N=1 V=1 Z=0 C=0 (F8)
|
||||
; 93 + 82 and C=0 gives 75 and N=0 V=1 Z=0 C=1 (79)
|
||||
; 89 + 76 and C=0 gives 65 and N=0 V=0 Z=0 C=1 (39)
|
||||
; 89 + 76 and C=1 gives 66 and N=0 V=0 Z=0 C=1 (39)
|
||||
; 80 + f0 and C=0 gives d0 and N=1 V=1 Z=0 C=1 (F9)
|
||||
; 80 + fa and C=0 gives e0 and N=1 V=0 Z=0 C=1 (B9)
|
||||
; 2f + 4f and C=0 gives 74 and N=0 V=0 Z=0 C=0 (38)
|
||||
; 6f + 00 and C=1 gives 76 and N=0 V=0 Z=0 C=0 (38)
|
||||
|
||||
RES=$0300
|
||||
|
||||
*=$0200
|
||||
|
||||
SED
|
||||
CLC
|
||||
LDA #$00
|
||||
ADC #$00
|
||||
STA RES
|
||||
PHP
|
||||
PLA
|
||||
STA RES+1
|
||||
SEC
|
||||
LDA #$79
|
||||
ADC #$00
|
||||
STA RES+2
|
||||
PHP
|
||||
PLA
|
||||
STA RES+3
|
||||
CLC
|
||||
LDA #$24
|
||||
ADC #$56
|
||||
STA RES+4
|
||||
PHP
|
||||
PLA
|
||||
STA RES+5
|
||||
CLC
|
||||
LDA #$93
|
||||
ADC #$82
|
||||
STA RES+6
|
||||
PHP
|
||||
PLA
|
||||
STA RES+7
|
||||
CLC
|
||||
LDA #$89
|
||||
ADC #$76
|
||||
STA RES+8
|
||||
PHP
|
||||
PLA
|
||||
STA RES+9
|
||||
SEC
|
||||
LDA #$89
|
||||
ADC #$76
|
||||
STA RES+10
|
||||
PHP
|
||||
PLA
|
||||
STA RES+11
|
||||
CLC
|
||||
LDA #$80
|
||||
ADC #$F0
|
||||
STA RES+12
|
||||
PHP
|
||||
PLA
|
||||
STA RES+13
|
||||
CLC
|
||||
LDA #$80
|
||||
ADC #$FA
|
||||
STA RES+14
|
||||
PHP
|
||||
PLA
|
||||
STA RES+15
|
||||
CLC
|
||||
LDA #$2F
|
||||
ADC #$4F
|
||||
STA RES+16
|
||||
PHP
|
||||
PLA
|
||||
STA RES+17
|
||||
SEC
|
||||
LDA #$6F
|
||||
ADC #$00
|
||||
STA RES+18
|
||||
PHP
|
||||
PLA
|
||||
STA RES+19
|
||||
BRK
|
||||
|
||||
*=$0300
|
||||
|
||||
.DS 20
|
||||
; ADC, test decimal mode.
|
||||
;
|
||||
; NV-BDIZC
|
||||
; ??1110??
|
||||
;
|
||||
; The results I got on Rockwell 6502 AP
|
||||
;
|
||||
; 00 + 00 and C=0 gives 00 and N=0 V=0 Z=1 C=0 (3A)
|
||||
; 79 + 00 and C=1 gives 80 and N=1 V=1 Z=0 C=0 (F8)
|
||||
; 24 + 56 and C=0 gives 80 and N=1 V=1 Z=0 C=0 (F8)
|
||||
; 93 + 82 and C=0 gives 75 and N=0 V=1 Z=0 C=1 (79)
|
||||
; 89 + 76 and C=0 gives 65 and N=0 V=0 Z=0 C=1 (39)
|
||||
; 89 + 76 and C=1 gives 66 and N=0 V=0 Z=0 C=1 (39)
|
||||
; 80 + f0 and C=0 gives d0 and N=1 V=1 Z=0 C=1 (F9)
|
||||
; 80 + fa and C=0 gives e0 and N=1 V=0 Z=0 C=1 (B9)
|
||||
; 2f + 4f and C=0 gives 74 and N=0 V=0 Z=0 C=0 (38)
|
||||
; 6f + 00 and C=1 gives 76 and N=0 V=0 Z=0 C=0 (38)
|
||||
|
||||
RES=$0300
|
||||
|
||||
*=$0200
|
||||
|
||||
SED
|
||||
CLC
|
||||
LDA #$00
|
||||
ADC #$00
|
||||
STA RES
|
||||
PHP
|
||||
PLA
|
||||
STA RES+1
|
||||
SEC
|
||||
LDA #$79
|
||||
ADC #$00
|
||||
STA RES+2
|
||||
PHP
|
||||
PLA
|
||||
STA RES+3
|
||||
CLC
|
||||
LDA #$24
|
||||
ADC #$56
|
||||
STA RES+4
|
||||
PHP
|
||||
PLA
|
||||
STA RES+5
|
||||
CLC
|
||||
LDA #$93
|
||||
ADC #$82
|
||||
STA RES+6
|
||||
PHP
|
||||
PLA
|
||||
STA RES+7
|
||||
CLC
|
||||
LDA #$89
|
||||
ADC #$76
|
||||
STA RES+8
|
||||
PHP
|
||||
PLA
|
||||
STA RES+9
|
||||
SEC
|
||||
LDA #$89
|
||||
ADC #$76
|
||||
STA RES+10
|
||||
PHP
|
||||
PLA
|
||||
STA RES+11
|
||||
CLC
|
||||
LDA #$80
|
||||
ADC #$F0
|
||||
STA RES+12
|
||||
PHP
|
||||
PLA
|
||||
STA RES+13
|
||||
CLC
|
||||
LDA #$80
|
||||
ADC #$FA
|
||||
STA RES+14
|
||||
PHP
|
||||
PLA
|
||||
STA RES+15
|
||||
CLC
|
||||
LDA #$2F
|
||||
ADC #$4F
|
||||
STA RES+16
|
||||
PHP
|
||||
PLA
|
||||
STA RES+17
|
||||
SEC
|
||||
LDA #$6F
|
||||
ADC #$00
|
||||
STA RES+18
|
||||
PHP
|
||||
PLA
|
||||
STA RES+19
|
||||
BRK
|
||||
|
||||
*=$0300
|
||||
|
||||
.DS 20
|
||||
|
@ -1,36 +1,36 @@
|
||||
; Test ADC BCD mode.
|
||||
ORG
|
||||
$0200
|
||||
$F8 $18 $A9 $00 $69 $00 $8D $00
|
||||
$03 $08 $68 $8D $01 $03 $38 $A9
|
||||
$79 $69 $00 $8D $02 $03 $08 $68
|
||||
$8D $03 $03 $18 $A9 $24 $69 $56
|
||||
$8D $04 $03 $08 $68 $8D $05 $03
|
||||
$18 $A9 $93 $69 $82 $8D $06 $03
|
||||
$08 $68 $8D $07 $03 $18 $A9 $89
|
||||
$69 $76 $8D $08 $03 $08 $68 $8D
|
||||
$09 $03 $38 $A9 $89 $69 $76 $8D
|
||||
$0A $03 $08 $68 $8D $0B $03 $18
|
||||
$A9 $80 $69 $F0 $8D $0C $03 $08
|
||||
$68 $8D $0D $03 $18 $A9 $80 $69
|
||||
$FA $8D $0E $03 $08 $68 $8D $0F
|
||||
$03 $18 $A9 $2F $69 $4F $8D $10
|
||||
$03 $08 $68 $8D $11 $03 $38 $A9
|
||||
$6F $69 $00 $8D $12 $03 $08 $68
|
||||
$8D $13 $03 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
|
||||
; Test ADC BCD mode.
|
||||
ORG
|
||||
$0200
|
||||
$F8 $18 $A9 $00 $69 $00 $8D $00
|
||||
$03 $08 $68 $8D $01 $03 $38 $A9
|
||||
$79 $69 $00 $8D $02 $03 $08 $68
|
||||
$8D $03 $03 $18 $A9 $24 $69 $56
|
||||
$8D $04 $03 $08 $68 $8D $05 $03
|
||||
$18 $A9 $93 $69 $82 $8D $06 $03
|
||||
$08 $68 $8D $07 $03 $18 $A9 $89
|
||||
$69 $76 $8D $08 $03 $08 $68 $8D
|
||||
$09 $03 $38 $A9 $89 $69 $76 $8D
|
||||
$0A $03 $08 $68 $8D $0B $03 $18
|
||||
$A9 $80 $69 $F0 $8D $0C $03 $08
|
||||
$68 $8D $0D $03 $18 $A9 $80 $69
|
||||
$FA $8D $0E $03 $08 $68 $8D $0F
|
||||
$03 $18 $A9 $2F $69 $4F $8D $10
|
||||
$03 $08 $68 $8D $11 $03 $38 $A9
|
||||
$6F $69 $00 $8D $12 $03 $08 $68
|
||||
$8D $13 $03 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
|
||||
|
168
t_sbc_bcd_01.65s
168
t_sbc_bcd_01.65s
@ -1,85 +1,85 @@
|
||||
; SBC, test decimal mode.
|
||||
;
|
||||
; NV-BDIZC
|
||||
; ??1110??
|
||||
;
|
||||
; Expected results (I got on Rockwell 6502 AP):
|
||||
; 00 - 00 and C=0 gives 99 and N=1 V=0 Z=0 C=0 (B8)
|
||||
; 00 - 00 and C=1 gives 00 and N=0 V=0 Z=1 C=1 (3B)
|
||||
; 00 - 01 and C=1 gives 99 and N=1 V=0 Z=0 C=0 (B8)
|
||||
; 0a - 00 and C=1 gives 0a and N=0 V=0 Z=0 C=1 (39)
|
||||
; 0b - 00 and C=0 gives 0a and N=0 V=0 Z=0 C=1 (39)
|
||||
; 9a - 00 and C=1 gives 9a and N=1 V=0 Z=0 C=1 (B9)
|
||||
; 9b - 00 and C=0 gives 9a and N=1 V=0 Z=0 C=1 (B9)
|
||||
;
|
||||
|
||||
*=$0200
|
||||
|
||||
SED
|
||||
CLC
|
||||
LDA #$00
|
||||
SBC #$00
|
||||
STA SBT1A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT1F
|
||||
SEC
|
||||
LDA #$00
|
||||
SBC #$00
|
||||
STA SBT2A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT2F
|
||||
SEC
|
||||
LDA #$00
|
||||
SBC #$01
|
||||
STA SBT3A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT3F
|
||||
SEC
|
||||
LDA #$0A
|
||||
SBC #$00
|
||||
STA SBT4A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT4F
|
||||
CLC
|
||||
LDA #$0B
|
||||
SBC #$00
|
||||
STA SBT5A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT5F
|
||||
SEC
|
||||
LDA #$9A
|
||||
SBC #$00
|
||||
STA SBT6A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT6F
|
||||
CLC
|
||||
LDA #$9B
|
||||
SBC #$00
|
||||
STA SBT7A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT7F
|
||||
BRK
|
||||
|
||||
*=$0300
|
||||
|
||||
SBT1A: .DB 0
|
||||
SBT1F: .DB 0
|
||||
SBT2A: .DB 0
|
||||
SBT2F: .DB 0
|
||||
SBT3A: .DB 0
|
||||
SBT3F: .DB 0
|
||||
SBT4A: .DB 0
|
||||
SBT4F: .DB 0
|
||||
SBT5A: .DB 0
|
||||
SBT5F: .DB 0
|
||||
SBT6A: .DB 0
|
||||
SBT6F: .DB 0
|
||||
SBT7A: .DB 0
|
||||
; SBC, test decimal mode.
|
||||
;
|
||||
; NV-BDIZC
|
||||
; ??1110??
|
||||
;
|
||||
; Expected results (I got on Rockwell 6502 AP):
|
||||
; 00 - 00 and C=0 gives 99 and N=1 V=0 Z=0 C=0 (B8)
|
||||
; 00 - 00 and C=1 gives 00 and N=0 V=0 Z=1 C=1 (3B)
|
||||
; 00 - 01 and C=1 gives 99 and N=1 V=0 Z=0 C=0 (B8)
|
||||
; 0a - 00 and C=1 gives 0a and N=0 V=0 Z=0 C=1 (39)
|
||||
; 0b - 00 and C=0 gives 0a and N=0 V=0 Z=0 C=1 (39)
|
||||
; 9a - 00 and C=1 gives 9a and N=1 V=0 Z=0 C=1 (B9)
|
||||
; 9b - 00 and C=0 gives 9a and N=1 V=0 Z=0 C=1 (B9)
|
||||
;
|
||||
|
||||
*=$0200
|
||||
|
||||
SED
|
||||
CLC
|
||||
LDA #$00
|
||||
SBC #$00
|
||||
STA SBT1A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT1F
|
||||
SEC
|
||||
LDA #$00
|
||||
SBC #$00
|
||||
STA SBT2A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT2F
|
||||
SEC
|
||||
LDA #$00
|
||||
SBC #$01
|
||||
STA SBT3A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT3F
|
||||
SEC
|
||||
LDA #$0A
|
||||
SBC #$00
|
||||
STA SBT4A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT4F
|
||||
CLC
|
||||
LDA #$0B
|
||||
SBC #$00
|
||||
STA SBT5A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT5F
|
||||
SEC
|
||||
LDA #$9A
|
||||
SBC #$00
|
||||
STA SBT6A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT6F
|
||||
CLC
|
||||
LDA #$9B
|
||||
SBC #$00
|
||||
STA SBT7A
|
||||
PHP
|
||||
PLA
|
||||
STA SBT7F
|
||||
BRK
|
||||
|
||||
*=$0300
|
||||
|
||||
SBT1A: .DB 0
|
||||
SBT1F: .DB 0
|
||||
SBT2A: .DB 0
|
||||
SBT2F: .DB 0
|
||||
SBT3A: .DB 0
|
||||
SBT3F: .DB 0
|
||||
SBT4A: .DB 0
|
||||
SBT4F: .DB 0
|
||||
SBT5A: .DB 0
|
||||
SBT5F: .DB 0
|
||||
SBT6A: .DB 0
|
||||
SBT6F: .DB 0
|
||||
SBT7A: .DB 0
|
||||
SBT7F: .DB 0
|
@ -1,36 +1,36 @@
|
||||
; Test BCD mode.
|
||||
ORG
|
||||
$0200
|
||||
$F8 $18 $A9 $00 $E9 $00 $8D $00
|
||||
$03 $08 $68 $8D $01 $03 $38 $A9
|
||||
$00 $E9 $00 $8D $02 $03 $08 $68
|
||||
$8D $03 $03 $38 $A9 $00 $E9 $01
|
||||
$8D $04 $03 $08 $68 $8D $05 $03
|
||||
$38 $A9 $0A $E9 $00 $8D $06 $03
|
||||
$08 $68 $8D $07 $03 $18 $A9 $0B
|
||||
$E9 $00 $8D $08 $03 $08 $68 $8D
|
||||
$09 $03 $38 $A9 $9A $E9 $00 $8D
|
||||
$0A $03 $08 $68 $8D $0B $03 $18
|
||||
$A9 $9B $E9 $00 $8D $0C $03 $08
|
||||
$68 $8D $0D $03 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
|
||||
; Test BCD mode.
|
||||
ORG
|
||||
$0200
|
||||
$F8 $18 $A9 $00 $E9 $00 $8D $00
|
||||
$03 $08 $68 $8D $01 $03 $38 $A9
|
||||
$00 $E9 $00 $8D $02 $03 $08 $68
|
||||
$8D $03 $03 $38 $A9 $00 $E9 $01
|
||||
$8D $04 $03 $08 $68 $8D $05 $03
|
||||
$38 $A9 $0A $E9 $00 $8D $06 $03
|
||||
$08 $68 $8D $07 $03 $18 $A9 $0B
|
||||
$E9 $00 $8D $08 $03 $08 $68 $8D
|
||||
$09 $03 $38 $A9 $9A $E9 $00 $8D
|
||||
$0A $03 $08 $68 $8D $0B $03 $18
|
||||
$A9 $9B $E9 $00 $8D $0C $03 $08
|
||||
$68 $8D $0D $03 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
|
||||
|
109
tall.dat
Normal file
109
tall.dat
Normal file
@ -0,0 +1,109 @@
|
||||
; Created with BIN2HEX (C) Marek Karcz 2016. All rights reserved.
|
||||
; 03/09/16 20:30:42
|
||||
ADDR
|
||||
$4000
|
||||
ORG
|
||||
$0000
|
||||
ORG
|
||||
$4000
|
||||
$a9 $00 $8d $10 $02 $a9 $55 $8d $00 $02 $a9 $aa $8d $01 $02 $a9
|
||||
$ff $8d $02 $02 $a9 $6e $8d $03 $02 $a9 $42 $8d $04 $02 $a9 $33
|
||||
$8d $05 $02 $a9 $9d $8d $06 $02 $a9 $7f $8d $07 $02 $a9 $a5 $8d
|
||||
$08 $02 $a9 $1f $8d $09 $02 $a9 $ce $8d $0a $02 $a9 $29 $8d $0b
|
||||
$02 $a9 $42 $8d $0c $02 $a9 $6c $8d $0d $02 $a9 $42 $8d $0e $02
|
||||
$a9 $55 $a2 $2a $a0 $73 $85 $81 $a9 $01 $85 $61 $a9 $7e $a5 $81
|
||||
$8d $10 $09 $a9 $7e $ad $10 $09 $95 $56 $a9 $7e $b5 $56 $84 $60
|
||||
$91 $60 $a9 $7e $b1 $60 $9d $ff $07 $a9 $7e $bd $ff $07 $99 $ff
|
||||
$07 $a9 $7e $b9 $ff $07 $81 $36 $a9 $7e $a1 $36 $86 $50 $a6 $60
|
||||
$a4 $50 $8e $13 $09 $a2 $22 $ae $13 $09 $8c $14 $09 $a0 $99 $ac
|
||||
$14 $09 $94 $2d $96 $77 $a0 $99 $b4 $2d $a2 $22 $b6 $77 $a0 $99
|
||||
$bc $a0 $08 $a2 $22 $be $a1 $08 $9d $00 $02 $ad $2a $02 $cd $00
|
||||
$02 $f0 $03 $4c $c0 $45 $a9 $fe $8d $10 $02 $a9 $55 $29 $53 $09
|
||||
$38 $49 $11 $85 $99 $a9 $b9 $85 $10 $a9 $e7 $85 $11 $a9 $39 $85
|
||||
$12 $a5 $99 $25 $10 $05 $11 $45 $12 $a2 $10 $85 $99 $a9 $bc $85
|
||||
$20 $a9 $31 $85 $21 $a9 $17 $85 $22 $a5 $99 $35 $10 $15 $11 $55
|
||||
$12 $85 $99 $a9 $6f $8d $10 $01 $a9 $3c $8d $11 $01 $a9 $27 $8d
|
||||
$12 $01 $a5 $99 $2d $10 $01 $0d $11 $01 $4d $12 $01 $85 $99 $a9
|
||||
$8a $8d $20 $01 $a9 $47 $8d $21 $01 $a9 $8f $8d $22 $01 $a5 $99
|
||||
$3d $10 $01 $1d $11 $01 $5d $12 $01 $a0 $20 $85 $99 $a9 $73 $8d
|
||||
$30 $01 $a9 $2a $8d $31 $01 $a9 $f1 $8d $32 $01 $a5 $99 $39 $10
|
||||
$01 $19 $11 $01 $59 $12 $01 $85 $99 $a9 $70 $85 $30 $a9 $01 $85
|
||||
$31 $a9 $71 $85 $32 $a9 $01 $85 $33 $a9 $72 $85 $34 $a9 $01 $85
|
||||
$35 $a9 $c5 $8d $70 $01 $a9 $7c $8d $71 $01 $a9 $a1 $8d $72 $01
|
||||
$a5 $99 $21 $20 $01 $22 $41 $24 $85 $99 $a9 $60 $85 $40 $a9 $01
|
||||
$85 $41 $a9 $61 $85 $42 $a9 $01 $85 $43 $a9 $62 $85 $44 $a9 $01
|
||||
$85 $45 $a9 $37 $8d $50 $02 $a9 $23 $8d $51 $02 $a9 $9d $8d $52
|
||||
$02 $a5 $99 $a0 $f0 $31 $40 $11 $42 $51 $44 $85 $a9 $a5 $a9 $cd
|
||||
$01 $02 $f0 $08 $a9 $01 $8d $10 $02 $4c $c0 $45 $a9 $ff $a2 $00
|
||||
$85 $90 $e6 $90 $e6 $90 $a5 $90 $a6 $90 $95 $90 $f6 $90 $b5 $90
|
||||
$a6 $91 $9d $90 $01 $ee $92 $01 $bd $90 $01 $ae $92 $01 $9d $90
|
||||
$01 $fe $90 $01 $bd $90 $01 $ae $93 $01 $9d $70 $01 $de $70 $01
|
||||
$bd $70 $01 $ae $74 $01 $9d $70 $01 $ce $73 $01 $bd $70 $01 $ae
|
||||
$73 $01 $95 $70 $d6 $70 $b5 $70 $a6 $72 $95 $70 $c6 $71 $c6 $71
|
||||
$a5 $71 $cd $02 $02 $f0 $08 $a9 $02 $8d $10 $02 $4c $c0 $45 $a9
|
||||
$4b $4a $0a $85 $50 $06 $50 $06 $50 $46 $50 $a5 $50 $a6 $50 $09
|
||||
$c9 $85 $60 $16 $4c $56 $4c $56 $4c $b5 $4c $a6 $60 $09 $41 $8d
|
||||
$2e $01 $5e $00 $01 $5e $00 $01 $1e $00 $01 $bd $00 $01 $ae $2e
|
||||
$01 $09 $81 $9d $00 $01 $4e $36 $01 $4e $36 $01 $0e $36 $01 $bd
|
||||
$00 $01 $2a $2a $6a $85 $70 $a6 $70 $09 $03 $95 $0c $26 $c0 $66
|
||||
$c0 $66 $c0 $b5 $0c $a6 $c0 $85 $d0 $36 $75 $36 $75 $76 $75 $a5
|
||||
$d0 $a6 $d0 $9d $00 $01 $2e $b7 $01 $2e $b7 $01 $2e $b7 $01 $6e
|
||||
$b7 $01 $bd $00 $01 $ae $b7 $01 $8d $dd $01 $3e $00 $01 $7e $00
|
||||
$01 $7e $00 $01 $ad $dd $01 $cd $03 $02 $f0 $08 $a9 $03 $8d $10
|
||||
$02 $4c $c0 $45 $a9 $e8 $85 $20 $a9 $42 $85 $21 $a9 $00 $09 $03
|
||||
$4c $d5 $42 $09 $ff $09 $30 $20 $e1 $42 $09 $42 $6c $20 $00 $09
|
||||
$ff $85 $30 $a6 $30 $a9 $00 $60 $95 $0d $a5 $40 $cd $04 $02 $f0
|
||||
$08 $a9 $04 $8d $10 $02 $4c $c0 $45 $a9 $35 $aa $ca $ca $e8 $8a
|
||||
$a8 $88 $88 $c8 $98 $aa $a9 $20 $9a $a2 $10 $ba $8a $85 $40 $a5
|
||||
$40 $cd $05 $02 $f0 $08 $a9 $05 $8d $10 $02 $4c $c0 $45 $2a $a9
|
||||
$6a $85 $50 $a9 $6b $85 $51 $a9 $a1 $85 $60 $a9 $a2 $85 $61 $a9
|
||||
$ff $69 $ff $69 $ff $e9 $ae $85 $40 $a6 $40 $75 $00 $f5 $01 $65
|
||||
$60 $e5 $61 $8d $20 $01 $a9 $4d $8d $21 $01 $a9 $23 $6d $20 $01
|
||||
$ed $21 $01 $85 $f0 $a6 $f0 $a9 $64 $8d $24 $01 $a9 $62 $8d $25
|
||||
$01 $a9 $26 $7d $00 $01 $fd $01 $01 $85 $f1 $a4 $f1 $a9 $e5 $8d
|
||||
$28 $01 $a9 $e9 $8d $29 $01 $a9 $34 $79 $00 $01 $f9 $01 $01 $85
|
||||
$f2 $a6 $f2 $a9 $20 $85 $70 $a9 $01 $85 $71 $a9 $24 $85 $72 $a9
|
||||
$01 $85 $73 $61 $41 $e1 $3f $85 $f3 $a4 $f3 $a9 $da $85 $80 $a9
|
||||
$00 $85 $81 $a9 $dc $85 $82 $a9 $00 $85 $83 $a9 $aa $71 $80 $f1
|
||||
$82 $85 $30 $a5 $30 $cd $06 $02 $f0 $08 $a9 $06 $8d $10 $02 $4c
|
||||
$c0 $45 $a9 $00 $85 $34 $a9 $ff $8d $30 $01 $a9 $99 $8d $9d $01
|
||||
$a9 $db $8d $99 $01 $a9 $2f $85 $32 $a9 $32 $85 $4f $a9 $30 $85
|
||||
$33 $a9 $70 $85 $af $a9 $18 $85 $30 $c9 $18 $f0 $02 $29 $00 $09
|
||||
$01 $c5 $30 $d0 $02 $29 $00 $a2 $00 $cd $30 $01 $f0 $04 $85 $40
|
||||
$a6 $40 $d5 $27 $d0 $06 $09 $84 $85 $41 $a6 $41 $29 $db $dd $00
|
||||
$01 $f0 $02 $29 $00 $85 $42 $a4 $42 $29 $00 $d9 $00 $01 $d0 $02
|
||||
$09 $0f $85 $43 $a6 $43 $09 $24 $c1 $40 $f0 $02 $09 $7f $85 $44
|
||||
$a4 $44 $49 $0f $d1 $33 $d0 $04 $a5 $44 $85 $15 $a5 $15 $cd $07
|
||||
$02 $f0 $08 $a9 $07 $8d $10 $02 $4c $c0 $45 $a9 $a5 $85 $20 $8d
|
||||
$20 $01 $a9 $5a $85 $21 $a2 $a5 $e0 $a5 $f0 $02 $a2 $01 $e4 $20
|
||||
$f0 $02 $a2 $02 $ec $20 $01 $f0 $02 $a2 $03 $86 $30 $a4 $30 $c0
|
||||
$a5 $f0 $02 $a0 $04 $c4 $20 $f0 $02 $a0 $05 $cc $20 $01 $f0 $02
|
||||
$a0 $06 $84 $31 $a5 $31 $24 $20 $d0 $02 $a9 $07 $2c $20 $01 $d0
|
||||
$02 $a9 $08 $24 $21 $d0 $02 $85 $42 $a5 $42 $cd $08 $02 $f0 $08
|
||||
$a9 $08 $8d $10 $02 $4c $c0 $45 $a9 $54 $85 $32 $a9 $b3 $85 $a1
|
||||
$a9 $87 $85 $43 $a2 $a1 $10 $02 $a2 $32 $b4 $00 $10 $04 $a9 $05
|
||||
$a6 $a1 $30 $02 $e9 $03 $30 $02 $a9 $41 $49 $30 $85 $32 $75 $00
|
||||
$50 $02 $a9 $03 $85 $54 $b6 $00 $75 $51 $50 $02 $a9 $e5 $75 $40
|
||||
$70 $05 $99 $01 $00 $65 $55 $70 $02 $a9 $00 $69 $f0 $90 $04 $85
|
||||
$60 $65 $43 $90 $02 $a9 $ff $65 $54 $b0 $04 $69 $87 $a6 $60 $b0
|
||||
$02 $a9 $00 $95 $73 $a5 $80 $cd $09 $02 $f0 $08 $a9 $09 $8d $10
|
||||
$02 $4c $c0 $45 $69 $00 $a9 $99 $69 $87 $18 $ea $90 $04 $69 $60
|
||||
$69 $93 $38 $ea $90 $01 $b8 $50 $02 $a9 $00 $69 $ad $ea $85 $30
|
||||
$a5 $30 $cd $0a $02 $f0 $08 $a9 $0a $8d $10 $02 $4c $c0 $45 $69
|
||||
$01 $a9 $27 $69 $01 $38 $08 $18 $28 $69 $00 $48 $a9 $00 $68 $85
|
||||
$30 $a5 $30 $cd $0b $02 $f0 $08 $a9 $0b $8d $10 $02 $4c $c0 $45
|
||||
$18 $a9 $42 $90 $04 $85 $33 $b0 $0a $a9 $45 $48 $a9 $61 $48 $38
|
||||
$08 $18 $40 $a5 $33 $cd $0c $02 $f0 $08 $a9 $0c $8d $10 $02 $4c
|
||||
$c0 $45 $69 $01 $78 $f8 $08 $68 $85 $20 $58 $d8 $08 $68 $65 $20
|
||||
$85 $21 $a5 $21 $cd $0d $02 $f0 $08 $a9 $0d $8d $10 $02 $4c $c0
|
||||
$45 $a9 $41 $85 $60 $e6 $60 $a5 $60 $cd $0e $02 $f0 $08 $a9 $0e
|
||||
$8d $10 $02 $4c $c0 $45 $a9 $fe $cd $10 $02 $d0 $03 $ee $10 $02
|
||||
$00 $00 $a2 $ff $9a $60 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
|
||||
ORG
|
||||
$ff00
|
||||
$40 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
|
||||
ORG
|
||||
$fff0
|
||||
$00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $ff $00 $ff $00 $ff
|
||||
EXEC
|
||||
$4000
|
398
tb.dat
Normal file
398
tb.dat
Normal file
@ -0,0 +1,398 @@
|
||||
ADDR
|
||||
$0CF0
|
||||
; Program disassembly from $0400 to $1000 2/20/2016
|
||||
; Tiny Basic port for VM6502 emulator.
|
||||
; Exec address: $0CF0
|
||||
ORG
|
||||
$0400
|
||||
; Enable ROM and IO emulation.
|
||||
ENROM
|
||||
ENIO
|
||||
; Set char IO address
|
||||
IOADDR
|
||||
$E000
|
||||
; Code/Data
|
||||
$4C, $85, $04, $4C, $BD, $04, $4C, $2C
|
||||
$0F, $4C, $31, $0F, $EA, $18, $60, $5F
|
||||
$18, $80, $00, $20, $86, $C3, $90, $05
|
||||
$86, $C3, $91, $C2, $60, $B1, $C2, $A0
|
||||
$00, $60, $62, $05, $64, $05, $D8, $05
|
||||
$05, $06, $33, $06, $FD, $05, $9F, $07
|
||||
$42, $0B, $3F, $0B, $7A, $07, $FC, $08
|
||||
$95, $07, $9F, $07, $9F, $07, $BD, $0A
|
||||
$C1, $0A, $8A, $0A, $9B, $0A, $E9, $0A
|
||||
$61, $07, $51, $07, $41, $0A, $52, $0A
|
||||
$4F, $0A, $62, $0A, $E7, $09, $CD, $06
|
||||
$06, $07, $9F, $07, $15, $08, $A7, $07
|
||||
$B7, $06, $BF, $06, $83, $08, $A1, $06
|
||||
$9F, $07, $9F, $07, $A8, $08, $4F, $0B
|
||||
$4D, $0B, $07, $09, $AA, $04, $37, $07
|
||||
$BD, $04, $1B, $0B, $B1, $0A, $20, $41
|
||||
$54, $20, $80, $70, $0B, $A9, $00, $85
|
||||
$20, $85, $22, $A9, $1C, $85, $21, $85
|
||||
$23, $A0, $01, $B1, $22, $AA, $49, $FF
|
||||
$91, $22, $D1, $22, $08, $8A, $91, $22
|
||||
$E6, $22, $D0, $02, $E6, $23, $28, $F0
|
||||
$EA, $88, $D8, $A5, $20, $6D, $13, $04
|
||||
$85, $24, $98, $65, $21, $85, $25, $98
|
||||
$91, $20, $C8, $91, $20, $A5, $22, $85
|
||||
$C6, $85, $26, $A5, $23, $85, $C7, $85
|
||||
$27, $20, $87, $08, $AD, $83, $04, $85
|
||||
$2A, $AD, $84, $04, $85, $2B, $A9, $80
|
||||
$85, $C1, $A9, $30, $85, $C0, $A2, $00
|
||||
$86, $BE, $86, $C2, $CA, $9A, $D8, $20
|
||||
$F9, $06, $20, $F2, $04, $4C, $E6, $04
|
||||
$83, $65, $C9, $30, $B0, $7B, $C9, $08
|
||||
$90, $0C, $0A, $AA, $BD, $1F, $04, $48
|
||||
$BD, $1E, $04, $48, $08, $40, $65, $C1
|
||||
$AA, $B1, $C1, $48, $B5, $00, $91, $C1
|
||||
$68, $95, $00, $60, $20, $87, $08, $A9
|
||||
$21, $20, $09, $04, $A5, $2A, $38, $ED
|
||||
$83, $04, $AA, $A5, $2B, $ED, $84, $04
|
||||
$20, $A0, $07, $A5, $BE, $F0, $12, $A9
|
||||
$7E, $85, $2A, $A9, $20, $85, $2B, $20
|
||||
$A1, $06, $A6, $28, $A5, $29, $20, $A0
|
||||
$07, $A9, $07, $20, $09, $04, $20, $87
|
||||
$08, $A5, $26, $85, $C6, $A5, $27, $85
|
||||
$C7, $4C, $CC, $04, $A2, $7C, $E4, $C1
|
||||
$90, $BA, $A6, $C1, $E6, $C1, $E6, $C1
|
||||
$18, $60, $C6, $BD, $A5, $BD, $F0, $AC
|
||||
$A5, $BC, $85, $2A, $A5, $BD, $85, $2B
|
||||
$60, $C9, $40, $B0, $43, $48, $20, $F9
|
||||
$06, $6D, $83, $04, $85, $BC, $68, $48
|
||||
$29, $07, $6D, $84, $04, $85, $BD, $68
|
||||
$29, $08, $D0, $DC, $A5, $BC, $A6, $2A
|
||||
$85, $2A, $86, $BC, $A5, $BD, $A6, $2B
|
||||
$85, $2B, $86, $BD, $A5, $C6, $E9, $01
|
||||
$85, $C6, $B0, $02, $C6, $C7, $C5, $24
|
||||
$A5, $C7, $E5, $25, $90, $AA, $A5, $BC
|
||||
$91, $C6, $C8, $A5, $BD, $91, $C6, $60
|
||||
$48, $4A, $4A, $4A, $4A, $29, $0E, $AA
|
||||
$68, $C9, $60, $29, $1F, $B0, $02, $09
|
||||
$E0, $18, $F0, $07, $65, $2A, $85, $BC
|
||||
$98, $65, $2B, $85, $BD, $4C, $FC, $04
|
||||
$A5, $2C, $85, $B8, $A5, $2D, $85, $B9
|
||||
$20, $25, $06, $20, $14, $06, $51, $2A
|
||||
$AA, $20, $F9, $06, $8A, $F0, $F1, $0A
|
||||
$F0, $12, $A5, $B8, $85, $2C, $A5, $B9
|
||||
$85, $2D, $4C, $64, $05, $20, $25, $06
|
||||
$C9, $0D, $D0, $F6, $60, $20, $25, $06
|
||||
$C9, $5B, $B0, $EE, $C9, $41, $90, $EA
|
||||
$0A, $20, $87, $07, $A0, $00, $B1, $2C
|
||||
$E6, $2C, $D0, $02, $E6, $2D, $C9, $0D
|
||||
$18, $60, $20, $14, $06, $B1, $2C, $C9
|
||||
$20, $F0, $F7, $C9, $3A, $18, $10, $02
|
||||
$C9, $30, $60, $20, $25, $06, $90, $C2
|
||||
$84, $BC, $84, $BD, $A5, $BC, $A6, $BD
|
||||
$06, $BC, $26, $BD, $06, $BC, $26, $BD
|
||||
$18, $65, $BC, $85, $BC, $8A, $65, $BD
|
||||
$06, $BC, $2A, $85, $BD, $20, $14, $06
|
||||
$29, $0F, $65, $BC, $85, $BC, $98, $65
|
||||
$BD, $85, $BD, $20, $25, $06, $B0, $D4
|
||||
$4C, $80, $07, $20, $FC, $08, $A5, $BC
|
||||
$05, $BD, $F0, $48, $A5, $20, $85, $2C
|
||||
$A5, $21, $85, $2D, $20, $6D, $07, $F0
|
||||
$12, $A5, $28, $C5, $BC, $A5, $29, $E5
|
||||
$BD, $B0, $08, $20, $14, $06, $D0, $FB
|
||||
$4C, $7C, $06, $A5, $28, $45, $BC, $D0
|
||||
$04, $A5, $29, $45, $BD, $60, $20, $A6
|
||||
$06, $20, $F9, $06, $10, $F8, $E6, $BF
|
||||
$30, $03, $4C, $09, $04, $C6, $BF, $60
|
||||
$C9, $22, $F0, $FB, $20, $A6, $06, $20
|
||||
$14, $06, $D0, $F4, $4C, $14, $05, $A9
|
||||
$20, $20, $A6, $06, $A5, $BF, $29, $87
|
||||
$30, $E5, $D0, $F3, $60, $A2, $7B, $20
|
||||
$56, $05, $E6, $C1, $E6, $C1, $E6, $C1
|
||||
$38, $B5, $03, $F5, $00, $95, $00, $B5
|
||||
$04, $F5, $01, $50, $04, $49, $80, $09
|
||||
$01, $30, $0A, $D0, $04, $15, $00, $F0
|
||||
$02, $56, $02, $56, $02, $56, $02, $90
|
||||
$0C, $A0, $00, $B1, $2A, $E6, $2A, $D0
|
||||
$02, $E6, $2B, $09, $00, $60, $A5, $BE
|
||||
$F0, $28, $20, $14, $06, $D0, $FB, $20
|
||||
$6D, $07, $F0, $1B, $20, $4C, $07, $20
|
||||
$0C, $04, $B0, $09, $A5, $C4, $85, $2A
|
||||
$A5, $C5, $85, $2B, $60, $AD, $83, $04
|
||||
$85, $2A, $AD, $84, $04, $85, $2B, $4C
|
||||
$14, $05, $85, $BF, $4C, $49, $05, $A5
|
||||
$20, $85, $2C, $A5, $21, $85, $2D, $20
|
||||
$6D, $07, $F0, $EB, $A5, $2A, $85, $C4
|
||||
$A5, $2B, $85, $C5, $A9, $01, $85, $BE
|
||||
$60, $20, $6B, $06, $F0, $BE, $A5, $BC
|
||||
$85, $28, $A5, $BD, $85, $29, $4C, $14
|
||||
$05, $20, $FD, $0A, $20, $FA, $0A, $20
|
||||
$74, $06, $D0, $EA, $60, $20, $14, $06
|
||||
$85, $28, $20, $14, $06, $85, $29, $05
|
||||
$28, $60, $20, $FC, $08, $20, $80, $07
|
||||
$A5, $BD, $20, $87, $07, $A5, $BC, $A6
|
||||
$C1, $CA, $95, $00, $86, $C1, $E4, $C0
|
||||
$D0, $0D, $4C, $14, $05, $A6, $C1, $E0
|
||||
$80, $10, $F7, $B5, $00, $E6, $C1, $60
|
||||
$85, $BD, $86, $BC, $4C, $B8, $07, $A6
|
||||
$C1, $B5, $01, $10, $08, $20, $41, $0A
|
||||
$A9, $2D, $20, $A6, $06, $20, $FC, $08
|
||||
$A9, $1F, $85, $B8, $85, $BA, $A9, $2A
|
||||
$85, $B9, $85, $BB, $A6, $BC, $A4, $BD
|
||||
$38, $E6, $B8, $8A, $E9, $10, $AA, $98
|
||||
$E9, $27, $A8, $B0, $F4, $C6, $B9, $8A
|
||||
$69, $E8, $AA, $98, $69, $03, $A8, $90
|
||||
$F4, $8A, $38, $E6, $BA, $E9, $64, $B0
|
||||
$F9, $88, $10, $F6, $C6, $BB, $69, $0A
|
||||
$90, $FA, $09, $30, $85, $BC, $A9, $20
|
||||
$85, $BD, $A2, $FB, $86, $C3, $B5, $BD
|
||||
$05, $BD, $C9, $20, $F0, $09, $A0, $30
|
||||
$84, $BD, $05, $BD, $20, $A6, $06, $A6
|
||||
$C3, $E8, $D0, $E8, $60, $A5, $2D, $48
|
||||
$A5, $2C, $48, $A5, $20, $85, $2C, $A5
|
||||
$21, $85, $2D, $A5, $24, $A6, $25, $20
|
||||
$5B, $08, $F0, $03, $20, $5B, $08, $A5
|
||||
$2C, $38, $E5, $B6, $A5, $2D, $E5, $B7
|
||||
$B0, $42, $20, $6D, $07, $F0, $3D, $A6
|
||||
$28, $A5, $29, $20, $A0, $07, $A9, $20
|
||||
$20, $A6, $06, $20, $0C, $04, $B0, $2C
|
||||
$20, $14, $06, $D0, $F3, $20, $83, $08
|
||||
$4C, $2F, $08, $85, $B6, $E6, $B6, $D0
|
||||
$01, $E8, $86, $B7, $A4, $C1, $C0, $80
|
||||
$F0, $18, $20, $6B, $06, $A5, $2C, $A6
|
||||
$2D, $38, $E9, $02, $B0, $01, $CA, $85
|
||||
$2C, $4C, $48, $0B, $68, $85, $2C, $68
|
||||
$85, $2D, $60, $A5, $BF, $30, $FB, $A9
|
||||
$0D, $20, $09, $04, $AD, $11, $04, $29
|
||||
$7F, $85, $BF, $F0, $07, $20, $64, $0B
|
||||
$C6, $BF, $D0, $F9, $A9, $0A, $4C, $61
|
||||
$0B, $AC, $12, $04, $84, $BF, $B0, $0B
|
||||
$A9, $30, $85, $2C, $85, $C0, $84, $2D
|
||||
$20, $80, $07, $45, $80, $85, $80, $20
|
||||
$06, $04, $A0, $00, $A6, $C0, $29, $7F
|
||||
$F0, $F1, $C9, $7F, $F0, $ED, $C9, $13
|
||||
$F0, $DA, $C9, $0A, $F0, $D3, $CD, $10
|
||||
$04, $F0, $09, $CD, $0F, $04, $D0, $0A
|
||||
$E0, $30, $D0, $16, $A6, $2C, $84, $BF
|
||||
$A9, $0D, $E4, $C1, $30, $08, $A9, $07
|
||||
$20, $A6, $06, $4C, $B3, $08, $95, $00
|
||||
$E8, $E8, $CA, $86, $C0, $C9, $0D, $D0
|
||||
$BA, $20, $83, $08, $20, $95, $07, $85
|
||||
$BC, $20, $95, $07, $85, $BD, $60, $20
|
||||
$D6, $0A, $20, $6B, $06, $08, $20, $6D
|
||||
$08, $85, $B8, $86, $B9, $A5, $BC, $85
|
||||
$B6, $A5, $BD, $85, $B7, $A2, $00, $28
|
||||
$D0, $0B, $20, $6D, $07, $CA, $CA, $CA
|
||||
$20, $14, $06, $D0, $FA, $84, $28, $84
|
||||
$29, $20, $D6, $0A, $A9, $0D, $D1, $2C
|
||||
$F0, $11, $E8, $E8, $E8, $E8, $C8, $D1
|
||||
$2C, $D0, $FA, $A5, $B6, $85, $28, $A5
|
||||
$B7, $85, $29, $A5, $B8, $85, $BC, $A5
|
||||
$B9, $85, $BD, $18, $A0, $00, $8A, $F0
|
||||
$6E, $10, $29, $65, $2E, $85, $B8, $A5
|
||||
$2F, $E9, $00, $85, $B9, $B1, $2E, $91
|
||||
$B8, $A6, $2E, $E4, $24, $D0, $06, $A5
|
||||
$2F, $C5, $25, $F0, $4A, $E8, $86, $2E
|
||||
$D0, $02, $E6, $2F, $E6, $B8, $D0, $E5
|
||||
$E6, $B9, $D0, $E1, $65, $24, $85, $B8
|
||||
$85, $2E, $98, $65, $25, $85, $B9, $85
|
||||
$2F, $A5, $2E, $E5, $C6, $A5, $2F, $E5
|
||||
$C7, $90, $05, $C6, $2A, $4C, $14, $05
|
||||
$B1, $24, $91, $2E, $A6, $24, $D0, $02
|
||||
$C6, $25, $C6, $24, $A6, $2E, $D0, $02
|
||||
$C6, $2F, $CA, $86, $2E, $E4, $BC, $D0
|
||||
$E7, $A6, $2F, $E4, $BD, $D0, $E1, $A5
|
||||
$B8, $85, $24, $A5, $B9, $85, $25, $A5
|
||||
$28, $05, $29, $F0, $17, $A5, $28, $91
|
||||
$BC, $C8, $A5, $29, $91, $BC, $C8, $84
|
||||
$B6, $20, $14, $06, $08, $A4, $B6, $91
|
||||
$BC, $28, $D0, $F2, $4C, $CC, $04, $20
|
||||
$54, $05, $B5, $03, $29, $80, $F0, $02
|
||||
$A9, $FF, $85, $BC, $85, $BD, $48, $75
|
||||
$02, $95, $02, $68, $48, $75, $03, $95
|
||||
$03, $68, $55, $01, $85, $BB, $10, $03
|
||||
$20, $43, $0A, $A0, $11, $B5, $00, $15
|
||||
$01, $D0, $03, $4C, $14, $05, $38, $A5
|
||||
$BC, $F5, $00, $48, $A5, $BD, $F5, $01
|
||||
$48, $45, $BD, $30, $0A, $68, $85, $BD
|
||||
$68, $85, $BC, $38, $4C, $32, $0A, $68
|
||||
$68, $18, $36, $02, $36, $03, $26, $BC
|
||||
$26, $BD, $88, $D0, $D9, $A5, $BB, $10
|
||||
$0D, $A6, $C1, $38, $98, $F5, $00, $95
|
||||
$00, $98, $F5, $01, $95, $01, $60, $20
|
||||
$41, $0A, $20, $54, $05, $B5, $00, $75
|
||||
$02, $95, $02, $B5, $01, $75, $03, $95
|
||||
$03, $60, $20, $54, $05, $A0, $10, $B5
|
||||
$02, $85, $BC, $B5, $03, $85, $BD, $16
|
||||
$02, $36, $03, $26, $BC, $26, $BD, $90
|
||||
$0D, $18, $B5, $02, $75, $00, $95, $02
|
||||
$B5, $03, $75, $01, $95, $03, $88, $D0
|
||||
$E6, $60, $20, $95, $07, $AA, $B5, $00
|
||||
$B4, $01, $C6, $C1, $A6, $C1, $94, $00
|
||||
$4C, $87, $07, $A2, $7D, $20, $56, $05
|
||||
$B5, $01, $48, $B5, $00, $48, $20, $95
|
||||
$07, $AA, $68, $95, $00, $68, $95, $01
|
||||
$60, $20, $FD, $0A, $A5, $BC, $85, $2A
|
||||
$A5, $BD, $85, $2B, $60, $A2, $2C, $D0
|
||||
$02, $A2, $2E, $B5, $00, $C9, $80, $B0
|
||||
$0D, $B5, $01, $D0, $09, $A5, $2C, $85
|
||||
$2E, $A5, $2D, $85, $2F, $60, $A5, $2C
|
||||
$A4, $2E, $84, $2C, $85, $2E, $A5, $2D
|
||||
$A4, $2F, $84, $2D, $85, $2F, $A0, $00
|
||||
$60, $A5, $28, $85, $BC, $A5, $29, $85
|
||||
$BD, $20, $9C, $05, $A5, $C6, $85, $26
|
||||
$A5, $C7, $85, $27, $60, $B1, $C6, $85
|
||||
$BC, $20, $08, $0B, $B1, $C6, $85, $BD
|
||||
$E6, $C6, $D0, $02, $E6, $C7, $A5, $22
|
||||
$C5, $C6, $A5, $23, $E5, $C7, $B0, $E4
|
||||
$4C, $14, $05, $20, $24, $0B, $85, $BC
|
||||
$98, $4C, $82, $07, $20, $FC, $08, $A5
|
||||
$BC, $85, $B6, $20, $FC, $08, $A5, $BD
|
||||
$85, $B7, $A4, $BC, $20, $FC, $08, $A6
|
||||
$B7, $A5, $B6, $18, $6C, $BC, $00, $20
|
||||
$42, $0B, $20, $F9, $06, $4C, $87, $07
|
||||
$86, $2D, $E0, $00, $60, $A0, $02, $84
|
||||
$BC, $A0, $29, $84, $BD, $A0, $00, $B1
|
||||
$BC, $C9, $08, $D0, $03, $4C, $0B, $0A
|
||||
$60, $20, $09, $04, $A9, $FF, $2C, $11
|
||||
$04, $30, $02, $A9, $00, $4C, $09, $04
|
||||
$24, $3A, $91, $27, $10, $E1, $59, $C5
|
||||
$2A, $56, $10, $11, $2C, $8B, $4C, $45
|
||||
$D4, $A0, $80, $BD, $30, $BC, $E0, $13
|
||||
$1D, $94, $47, $CF, $88, $54, $CF, $30
|
||||
$BC, $E0, $10, $11, $16, $80, $53, $55
|
||||
$C2, $30, $BC, $E0, $14, $16, $90, $50
|
||||
$D2, $83, $49, $4E, $D4, $E5, $71, $88
|
||||
$BB, $E1, $1D, $8F, $A2, $21, $58, $6F
|
||||
$83, $AC, $22, $55, $83, $BA, $24, $93
|
||||
$E0, $23, $1D, $30, $BC, $20, $48, $91
|
||||
$49, $C6, $30, $BC, $31, $34, $30, $BC
|
||||
$84, $54, $48, $45, $CE, $1C, $1D, $38
|
||||
$0D, $9A, $49, $4E, $50, $55, $D4, $A0
|
||||
$10, $E7, $24, $3F, $20, $91, $27, $E1
|
||||
$59, $81, $AC, $30, $BC, $13, $11, $82
|
||||
$AC, $4D, $E0, $1D, $89, $52, $45, $54
|
||||
$55, $52, $CE, $E0, $15, $1D, $85, $45
|
||||
$4E, $C4, $E0, $2D, $98, $4C, $49, $53
|
||||
$D4, $EC, $24, $00, $00, $00, $00, $0A
|
||||
$80, $1F, $24, $93, $23, $1D, $30, $BC
|
||||
$E1, $50, $80, $AC, $59, $85, $52, $55
|
||||
$CE, $38, $0A, $86, $43, $4C, $45, $41
|
||||
$D2, $2B, $84, $52, $45, $CD, $1D, $A0
|
||||
$80, $BD, $38, $14, $85, $AD, $30, $D3
|
||||
$17, $64, $81, $AB, $30, $D3, $85, $AB
|
||||
$30, $D3, $18, $5A, $85, $AD, $30, $D3
|
||||
$19, $54, $2F, $30, $E2, $85, $AA, $30
|
||||
$E2, $1A, $5A, $85, $AF, $30, $E2, $1B
|
||||
$54, $2F, $98, $52, $4E, $C4, $0A, $80
|
||||
$80, $12, $0A, $09, $29, $1A, $0A, $1A
|
||||
$85, $18, $13, $09, $80, $12, $01, $0B
|
||||
$31, $30, $61, $72, $0B, $04, $02, $03
|
||||
$05, $03, $1B, $1A, $19, $0B, $09, $06
|
||||
$0A, $00, $00, $1C, $17, $2F, $8F, $55
|
||||
$53, $D2, $80, $A8, $30, $BC, $31, $2A
|
||||
$31, $2A, $80, $A9, $2E, $2F, $A2, $12
|
||||
$2F, $C1, $2F, $80, $A8, $30, $BC, $80
|
||||
$A9, $2F, $83, $AC, $38, $BC, $0B, $2F
|
||||
$80, $A8, $52, $2F, $84, $BD, $09, $02
|
||||
$2F, $8E, $BC, $84, $BD, $09, $93, $2F
|
||||
$84, $BE, $09, $05, $2F, $09, $91, $2F
|
||||
$80, $BE, $84, $BD, $09, $06, $2F, $84
|
||||
$BC, $09, $95, $2F, $09, $04, $2F, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$20, $0D, $0F, $A0, $00, $20, $1D, $0F
|
||||
$20, $2C, $0F, $C9, $43, $D0, $03, $4C
|
||||
$85, $04, $C9, $57, $D0, $03, $4C, $BD
|
||||
$04, $A2, $2F, $20, $1D, $0F, $4C, $F8
|
||||
$0C, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$4D, $4B, $48, $42, $43, $2D, $38, $2D
|
||||
$52, $32, $20, $54, $49, $4E, $59, $20
|
||||
$42, $41, $53, $49, $43, $20, $36, $35
|
||||
$30, $32, $20, $50, $4F, $52, $54, $0D
|
||||
$0A, $56, $65, $72, $73, $69, $6F, $6E
|
||||
$3A, $20, $31, $2E, $30, $2E, $33, $2C
|
||||
$20, $32, $2F, $32, $30, $2F, $32, $30
|
||||
$31, $36, $0D, $0A, $28, $4E, $4F, $54
|
||||
$45, $3A, $20, $55, $73, $65, $20, $55
|
||||
$50, $50, $45, $52, $20, $43, $41, $53
|
||||
$45, $2E, $29, $0D, $0A, $42, $6F, $6F
|
||||
$74, $20, $28, $5B, $43, $5D, $6F, $6C
|
||||
$64, $2F, $5B, $57, $5D, $61, $72, $6D
|
||||
$29, $3F, $20, $07, $FF, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$86, $C3, $B1, $C2, $48, $C8, $B1, $C2
|
||||
$AA, $68, $A8, $8A, $60, $A2, $19, $A9
|
||||
$0D, $20, $31, $0F, $A9, $0A, $20, $31
|
||||
$0F, $CA, $D0, $FA, $60, $B9, $00, $0E
|
||||
$C9, $FF, $F0, $07, $20, $31, $0F, $C8
|
||||
$4C, $1D, $0F, $60, $AD, $00, $E0, $F0
|
||||
$FB, $85, $FE, $C9, $FF, $F0, $1E, $C9
|
||||
$00, $F0, $1A, $C9, $91, $F0, $16, $C9
|
||||
$93, $F0, $12, $C9, $80, $F0, $0E, $4C
|
||||
$50, $0F, $20, $F0, $FF, $A5, $FE, $60
|
||||
$A5, $FE, $8D, $00, $E0, $60, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
423
tbe.dat
Normal file
423
tbe.dat
Normal file
@ -0,0 +1,423 @@
|
||||
ADDR
|
||||
$0CF0
|
||||
; Program disassembly from $0400 to $1000 2/20/2016
|
||||
; Tiny Basic port for VM6502 emulator.
|
||||
; Exec address: $0CF0
|
||||
;------------------------------------------------------
|
||||
ORG
|
||||
$0400
|
||||
;------------------------------------------------------
|
||||
; Character I/O emulation address.
|
||||
;------------------------------------------------------
|
||||
IOADDR
|
||||
$E000
|
||||
;------------------------------------------------------
|
||||
; Enable character I/O emulation.
|
||||
;------------------------------------------------------
|
||||
ENIO
|
||||
;------------------------------------------------------
|
||||
; Begin of ROM.
|
||||
;------------------------------------------------------
|
||||
ROMBEGIN
|
||||
$DF00
|
||||
;------------------------------------------------------
|
||||
; End of ROM.
|
||||
;------------------------------------------------------
|
||||
ROMEND
|
||||
$FFFF
|
||||
;------------------------------------------------------
|
||||
; Enable ROM (protected read-only memory) emulation.
|
||||
;------------------------------------------------------
|
||||
ENROM
|
||||
;------------------------------------------------------
|
||||
; Auto-execute code from address.
|
||||
;------------------------------------------------------
|
||||
EXEC
|
||||
$0CF0
|
||||
;------------------------------------------------------
|
||||
; Code/Data
|
||||
;------------------------------------------------------
|
||||
$4C, $85, $04, $4C, $BD, $04, $4C, $2C
|
||||
$0F, $4C, $31, $0F, $EA, $18, $60, $5F
|
||||
$18, $80, $00, $20, $86, $C3, $90, $05
|
||||
$86, $C3, $91, $C2, $60, $B1, $C2, $A0
|
||||
$00, $60, $62, $05, $64, $05, $D8, $05
|
||||
$05, $06, $33, $06, $FD, $05, $9F, $07
|
||||
$42, $0B, $3F, $0B, $7A, $07, $FC, $08
|
||||
$95, $07, $9F, $07, $9F, $07, $BD, $0A
|
||||
$C1, $0A, $8A, $0A, $9B, $0A, $E9, $0A
|
||||
$61, $07, $51, $07, $41, $0A, $52, $0A
|
||||
$4F, $0A, $62, $0A, $E7, $09, $CD, $06
|
||||
$06, $07, $9F, $07, $15, $08, $A7, $07
|
||||
$B7, $06, $BF, $06, $83, $08, $A1, $06
|
||||
$9F, $07, $9F, $07, $A8, $08, $4F, $0B
|
||||
$4D, $0B, $07, $09, $AA, $04, $37, $07
|
||||
$BD, $04, $1B, $0B, $B1, $0A, $20, $41
|
||||
$54, $20, $80, $70, $0B, $A9, $00, $85
|
||||
$20, $85, $22, $A9, $1C, $85, $21, $85
|
||||
$23, $A0, $01, $B1, $22, $AA, $49, $FF
|
||||
$91, $22, $D1, $22, $08, $8A, $91, $22
|
||||
$E6, $22, $D0, $02, $E6, $23, $28, $F0
|
||||
$EA, $88, $D8, $A5, $20, $6D, $13, $04
|
||||
$85, $24, $98, $65, $21, $85, $25, $98
|
||||
$91, $20, $C8, $91, $20, $A5, $22, $85
|
||||
$C6, $85, $26, $A5, $23, $85, $C7, $85
|
||||
$27, $20, $87, $08, $AD, $83, $04, $85
|
||||
$2A, $AD, $84, $04, $85, $2B, $A9, $80
|
||||
$85, $C1, $A9, $30, $85, $C0, $A2, $00
|
||||
$86, $BE, $86, $C2, $CA, $9A, $D8, $20
|
||||
$F9, $06, $20, $F2, $04, $4C, $E6, $04
|
||||
$83, $65, $C9, $30, $B0, $7B, $C9, $08
|
||||
$90, $0C, $0A, $AA, $BD, $1F, $04, $48
|
||||
$BD, $1E, $04, $48, $08, $40, $65, $C1
|
||||
$AA, $B1, $C1, $48, $B5, $00, $91, $C1
|
||||
$68, $95, $00, $60, $20, $87, $08, $A9
|
||||
$21, $20, $09, $04, $A5, $2A, $38, $ED
|
||||
$83, $04, $AA, $A5, $2B, $ED, $84, $04
|
||||
$20, $A0, $07, $A5, $BE, $F0, $12, $A9
|
||||
$7E, $85, $2A, $A9, $20, $85, $2B, $20
|
||||
$A1, $06, $A6, $28, $A5, $29, $20, $A0
|
||||
$07, $A9, $07, $20, $09, $04, $20, $87
|
||||
$08, $A5, $26, $85, $C6, $A5, $27, $85
|
||||
$C7, $4C, $CC, $04, $A2, $7C, $E4, $C1
|
||||
$90, $BA, $A6, $C1, $E6, $C1, $E6, $C1
|
||||
$18, $60, $C6, $BD, $A5, $BD, $F0, $AC
|
||||
$A5, $BC, $85, $2A, $A5, $BD, $85, $2B
|
||||
$60, $C9, $40, $B0, $43, $48, $20, $F9
|
||||
$06, $6D, $83, $04, $85, $BC, $68, $48
|
||||
$29, $07, $6D, $84, $04, $85, $BD, $68
|
||||
$29, $08, $D0, $DC, $A5, $BC, $A6, $2A
|
||||
$85, $2A, $86, $BC, $A5, $BD, $A6, $2B
|
||||
$85, $2B, $86, $BD, $A5, $C6, $E9, $01
|
||||
$85, $C6, $B0, $02, $C6, $C7, $C5, $24
|
||||
$A5, $C7, $E5, $25, $90, $AA, $A5, $BC
|
||||
$91, $C6, $C8, $A5, $BD, $91, $C6, $60
|
||||
$48, $4A, $4A, $4A, $4A, $29, $0E, $AA
|
||||
$68, $C9, $60, $29, $1F, $B0, $02, $09
|
||||
$E0, $18, $F0, $07, $65, $2A, $85, $BC
|
||||
$98, $65, $2B, $85, $BD, $4C, $FC, $04
|
||||
$A5, $2C, $85, $B8, $A5, $2D, $85, $B9
|
||||
$20, $25, $06, $20, $14, $06, $51, $2A
|
||||
$AA, $20, $F9, $06, $8A, $F0, $F1, $0A
|
||||
$F0, $12, $A5, $B8, $85, $2C, $A5, $B9
|
||||
$85, $2D, $4C, $64, $05, $20, $25, $06
|
||||
$C9, $0D, $D0, $F6, $60, $20, $25, $06
|
||||
$C9, $5B, $B0, $EE, $C9, $41, $90, $EA
|
||||
$0A, $20, $87, $07, $A0, $00, $B1, $2C
|
||||
$E6, $2C, $D0, $02, $E6, $2D, $C9, $0D
|
||||
$18, $60, $20, $14, $06, $B1, $2C, $C9
|
||||
$20, $F0, $F7, $C9, $3A, $18, $10, $02
|
||||
$C9, $30, $60, $20, $25, $06, $90, $C2
|
||||
$84, $BC, $84, $BD, $A5, $BC, $A6, $BD
|
||||
$06, $BC, $26, $BD, $06, $BC, $26, $BD
|
||||
$18, $65, $BC, $85, $BC, $8A, $65, $BD
|
||||
$06, $BC, $2A, $85, $BD, $20, $14, $06
|
||||
$29, $0F, $65, $BC, $85, $BC, $98, $65
|
||||
$BD, $85, $BD, $20, $25, $06, $B0, $D4
|
||||
$4C, $80, $07, $20, $FC, $08, $A5, $BC
|
||||
$05, $BD, $F0, $48, $A5, $20, $85, $2C
|
||||
$A5, $21, $85, $2D, $20, $6D, $07, $F0
|
||||
$12, $A5, $28, $C5, $BC, $A5, $29, $E5
|
||||
$BD, $B0, $08, $20, $14, $06, $D0, $FB
|
||||
$4C, $7C, $06, $A5, $28, $45, $BC, $D0
|
||||
$04, $A5, $29, $45, $BD, $60, $20, $A6
|
||||
$06, $20, $F9, $06, $10, $F8, $E6, $BF
|
||||
$30, $03, $4C, $09, $04, $C6, $BF, $60
|
||||
$C9, $22, $F0, $FB, $20, $A6, $06, $20
|
||||
$14, $06, $D0, $F4, $4C, $14, $05, $A9
|
||||
$20, $20, $A6, $06, $A5, $BF, $29, $87
|
||||
$30, $E5, $D0, $F3, $60, $A2, $7B, $20
|
||||
$56, $05, $E6, $C1, $E6, $C1, $E6, $C1
|
||||
$38, $B5, $03, $F5, $00, $95, $00, $B5
|
||||
$04, $F5, $01, $50, $04, $49, $80, $09
|
||||
$01, $30, $0A, $D0, $04, $15, $00, $F0
|
||||
$02, $56, $02, $56, $02, $56, $02, $90
|
||||
$0C, $A0, $00, $B1, $2A, $E6, $2A, $D0
|
||||
$02, $E6, $2B, $09, $00, $60, $A5, $BE
|
||||
$F0, $28, $20, $14, $06, $D0, $FB, $20
|
||||
$6D, $07, $F0, $1B, $20, $4C, $07, $20
|
||||
$0C, $04, $B0, $09, $A5, $C4, $85, $2A
|
||||
$A5, $C5, $85, $2B, $60, $AD, $83, $04
|
||||
$85, $2A, $AD, $84, $04, $85, $2B, $4C
|
||||
$14, $05, $85, $BF, $4C, $49, $05, $A5
|
||||
$20, $85, $2C, $A5, $21, $85, $2D, $20
|
||||
$6D, $07, $F0, $EB, $A5, $2A, $85, $C4
|
||||
$A5, $2B, $85, $C5, $A9, $01, $85, $BE
|
||||
$60, $20, $6B, $06, $F0, $BE, $A5, $BC
|
||||
$85, $28, $A5, $BD, $85, $29, $4C, $14
|
||||
$05, $20, $FD, $0A, $20, $FA, $0A, $20
|
||||
$74, $06, $D0, $EA, $60, $20, $14, $06
|
||||
$85, $28, $20, $14, $06, $85, $29, $05
|
||||
$28, $60, $20, $FC, $08, $20, $80, $07
|
||||
$A5, $BD, $20, $87, $07, $A5, $BC, $A6
|
||||
$C1, $CA, $95, $00, $86, $C1, $E4, $C0
|
||||
$D0, $0D, $4C, $14, $05, $A6, $C1, $E0
|
||||
$80, $10, $F7, $B5, $00, $E6, $C1, $60
|
||||
$85, $BD, $86, $BC, $4C, $B8, $07, $A6
|
||||
$C1, $B5, $01, $10, $08, $20, $41, $0A
|
||||
$A9, $2D, $20, $A6, $06, $20, $FC, $08
|
||||
$A9, $1F, $85, $B8, $85, $BA, $A9, $2A
|
||||
$85, $B9, $85, $BB, $A6, $BC, $A4, $BD
|
||||
$38, $E6, $B8, $8A, $E9, $10, $AA, $98
|
||||
$E9, $27, $A8, $B0, $F4, $C6, $B9, $8A
|
||||
$69, $E8, $AA, $98, $69, $03, $A8, $90
|
||||
$F4, $8A, $38, $E6, $BA, $E9, $64, $B0
|
||||
$F9, $88, $10, $F6, $C6, $BB, $69, $0A
|
||||
$90, $FA, $09, $30, $85, $BC, $A9, $20
|
||||
$85, $BD, $A2, $FB, $86, $C3, $B5, $BD
|
||||
$05, $BD, $C9, $20, $F0, $09, $A0, $30
|
||||
$84, $BD, $05, $BD, $20, $A6, $06, $A6
|
||||
$C3, $E8, $D0, $E8, $60, $A5, $2D, $48
|
||||
$A5, $2C, $48, $A5, $20, $85, $2C, $A5
|
||||
$21, $85, $2D, $A5, $24, $A6, $25, $20
|
||||
$5B, $08, $F0, $03, $20, $5B, $08, $A5
|
||||
$2C, $38, $E5, $B6, $A5, $2D, $E5, $B7
|
||||
$B0, $42, $20, $6D, $07, $F0, $3D, $A6
|
||||
$28, $A5, $29, $20, $A0, $07, $A9, $20
|
||||
$20, $A6, $06, $20, $0C, $04, $B0, $2C
|
||||
$20, $14, $06, $D0, $F3, $20, $83, $08
|
||||
$4C, $2F, $08, $85, $B6, $E6, $B6, $D0
|
||||
$01, $E8, $86, $B7, $A4, $C1, $C0, $80
|
||||
$F0, $18, $20, $6B, $06, $A5, $2C, $A6
|
||||
$2D, $38, $E9, $02, $B0, $01, $CA, $85
|
||||
$2C, $4C, $48, $0B, $68, $85, $2C, $68
|
||||
$85, $2D, $60, $A5, $BF, $30, $FB, $A9
|
||||
$0D, $20, $09, $04, $AD, $11, $04, $29
|
||||
$7F, $85, $BF, $F0, $07, $20, $64, $0B
|
||||
$C6, $BF, $D0, $F9, $A9, $0A, $4C, $61
|
||||
$0B, $AC, $12, $04, $84, $BF, $B0, $0B
|
||||
$A9, $30, $85, $2C, $85, $C0, $84, $2D
|
||||
$20, $80, $07, $45, $80, $85, $80, $20
|
||||
$06, $04, $A0, $00, $A6, $C0, $29, $7F
|
||||
$F0, $F1, $C9, $7F, $F0, $ED, $C9, $13
|
||||
$F0, $DA, $C9, $0A, $F0, $D3, $CD, $10
|
||||
$04, $F0, $09, $CD, $0F, $04, $D0, $0A
|
||||
$E0, $30, $D0, $16, $A6, $2C, $84, $BF
|
||||
$A9, $0D, $E4, $C1, $30, $08, $A9, $07
|
||||
$20, $A6, $06, $4C, $B3, $08, $95, $00
|
||||
$E8, $E8, $CA, $86, $C0, $C9, $0D, $D0
|
||||
$BA, $20, $83, $08, $20, $95, $07, $85
|
||||
$BC, $20, $95, $07, $85, $BD, $60, $20
|
||||
$D6, $0A, $20, $6B, $06, $08, $20, $6D
|
||||
$08, $85, $B8, $86, $B9, $A5, $BC, $85
|
||||
$B6, $A5, $BD, $85, $B7, $A2, $00, $28
|
||||
$D0, $0B, $20, $6D, $07, $CA, $CA, $CA
|
||||
$20, $14, $06, $D0, $FA, $84, $28, $84
|
||||
$29, $20, $D6, $0A, $A9, $0D, $D1, $2C
|
||||
$F0, $11, $E8, $E8, $E8, $E8, $C8, $D1
|
||||
$2C, $D0, $FA, $A5, $B6, $85, $28, $A5
|
||||
$B7, $85, $29, $A5, $B8, $85, $BC, $A5
|
||||
$B9, $85, $BD, $18, $A0, $00, $8A, $F0
|
||||
$6E, $10, $29, $65, $2E, $85, $B8, $A5
|
||||
$2F, $E9, $00, $85, $B9, $B1, $2E, $91
|
||||
$B8, $A6, $2E, $E4, $24, $D0, $06, $A5
|
||||
$2F, $C5, $25, $F0, $4A, $E8, $86, $2E
|
||||
$D0, $02, $E6, $2F, $E6, $B8, $D0, $E5
|
||||
$E6, $B9, $D0, $E1, $65, $24, $85, $B8
|
||||
$85, $2E, $98, $65, $25, $85, $B9, $85
|
||||
$2F, $A5, $2E, $E5, $C6, $A5, $2F, $E5
|
||||
$C7, $90, $05, $C6, $2A, $4C, $14, $05
|
||||
$B1, $24, $91, $2E, $A6, $24, $D0, $02
|
||||
$C6, $25, $C6, $24, $A6, $2E, $D0, $02
|
||||
$C6, $2F, $CA, $86, $2E, $E4, $BC, $D0
|
||||
$E7, $A6, $2F, $E4, $BD, $D0, $E1, $A5
|
||||
$B8, $85, $24, $A5, $B9, $85, $25, $A5
|
||||
$28, $05, $29, $F0, $17, $A5, $28, $91
|
||||
$BC, $C8, $A5, $29, $91, $BC, $C8, $84
|
||||
$B6, $20, $14, $06, $08, $A4, $B6, $91
|
||||
$BC, $28, $D0, $F2, $4C, $CC, $04, $20
|
||||
$54, $05, $B5, $03, $29, $80, $F0, $02
|
||||
$A9, $FF, $85, $BC, $85, $BD, $48, $75
|
||||
$02, $95, $02, $68, $48, $75, $03, $95
|
||||
$03, $68, $55, $01, $85, $BB, $10, $03
|
||||
$20, $43, $0A, $A0, $11, $B5, $00, $15
|
||||
$01, $D0, $03, $4C, $14, $05, $38, $A5
|
||||
$BC, $F5, $00, $48, $A5, $BD, $F5, $01
|
||||
$48, $45, $BD, $30, $0A, $68, $85, $BD
|
||||
$68, $85, $BC, $38, $4C, $32, $0A, $68
|
||||
$68, $18, $36, $02, $36, $03, $26, $BC
|
||||
$26, $BD, $88, $D0, $D9, $A5, $BB, $10
|
||||
$0D, $A6, $C1, $38, $98, $F5, $00, $95
|
||||
$00, $98, $F5, $01, $95, $01, $60, $20
|
||||
$41, $0A, $20, $54, $05, $B5, $00, $75
|
||||
$02, $95, $02, $B5, $01, $75, $03, $95
|
||||
$03, $60, $20, $54, $05, $A0, $10, $B5
|
||||
$02, $85, $BC, $B5, $03, $85, $BD, $16
|
||||
$02, $36, $03, $26, $BC, $26, $BD, $90
|
||||
$0D, $18, $B5, $02, $75, $00, $95, $02
|
||||
$B5, $03, $75, $01, $95, $03, $88, $D0
|
||||
$E6, $60, $20, $95, $07, $AA, $B5, $00
|
||||
$B4, $01, $C6, $C1, $A6, $C1, $94, $00
|
||||
$4C, $87, $07, $A2, $7D, $20, $56, $05
|
||||
$B5, $01, $48, $B5, $00, $48, $20, $95
|
||||
$07, $AA, $68, $95, $00, $68, $95, $01
|
||||
$60, $20, $FD, $0A, $A5, $BC, $85, $2A
|
||||
$A5, $BD, $85, $2B, $60, $A2, $2C, $D0
|
||||
$02, $A2, $2E, $B5, $00, $C9, $80, $B0
|
||||
$0D, $B5, $01, $D0, $09, $A5, $2C, $85
|
||||
$2E, $A5, $2D, $85, $2F, $60, $A5, $2C
|
||||
$A4, $2E, $84, $2C, $85, $2E, $A5, $2D
|
||||
$A4, $2F, $84, $2D, $85, $2F, $A0, $00
|
||||
$60, $A5, $28, $85, $BC, $A5, $29, $85
|
||||
$BD, $20, $9C, $05, $A5, $C6, $85, $26
|
||||
$A5, $C7, $85, $27, $60, $B1, $C6, $85
|
||||
$BC, $20, $08, $0B, $B1, $C6, $85, $BD
|
||||
$E6, $C6, $D0, $02, $E6, $C7, $A5, $22
|
||||
$C5, $C6, $A5, $23, $E5, $C7, $B0, $E4
|
||||
$4C, $14, $05, $20, $24, $0B, $85, $BC
|
||||
$98, $4C, $82, $07, $20, $FC, $08, $A5
|
||||
$BC, $85, $B6, $20, $FC, $08, $A5, $BD
|
||||
$85, $B7, $A4, $BC, $20, $FC, $08, $A6
|
||||
$B7, $A5, $B6, $18, $6C, $BC, $00, $20
|
||||
$42, $0B, $20, $F9, $06, $4C, $87, $07
|
||||
$86, $2D, $E0, $00, $60, $A0, $02, $84
|
||||
$BC, $A0, $29, $84, $BD, $A0, $00, $B1
|
||||
$BC, $C9, $08, $D0, $03, $4C, $0B, $0A
|
||||
$60, $20, $09, $04, $A9, $FF, $2C, $11
|
||||
$04, $30, $02, $A9, $00, $4C, $09, $04
|
||||
$24, $3A, $91, $27, $10, $E1, $59, $C5
|
||||
$2A, $56, $10, $11, $2C, $8B, $4C, $45
|
||||
$D4, $A0, $80, $BD, $30, $BC, $E0, $13
|
||||
$1D, $94, $47, $CF, $88, $54, $CF, $30
|
||||
$BC, $E0, $10, $11, $16, $80, $53, $55
|
||||
$C2, $30, $BC, $E0, $14, $16, $90, $50
|
||||
$D2, $83, $49, $4E, $D4, $E5, $71, $88
|
||||
$BB, $E1, $1D, $8F, $A2, $21, $58, $6F
|
||||
$83, $AC, $22, $55, $83, $BA, $24, $93
|
||||
$E0, $23, $1D, $30, $BC, $20, $48, $91
|
||||
$49, $C6, $30, $BC, $31, $34, $30, $BC
|
||||
$84, $54, $48, $45, $CE, $1C, $1D, $38
|
||||
$0D, $9A, $49, $4E, $50, $55, $D4, $A0
|
||||
$10, $E7, $24, $3F, $20, $91, $27, $E1
|
||||
$59, $81, $AC, $30, $BC, $13, $11, $82
|
||||
$AC, $4D, $E0, $1D, $89, $52, $45, $54
|
||||
$55, $52, $CE, $E0, $15, $1D, $85, $45
|
||||
$4E, $C4, $E0, $2D, $98, $4C, $49, $53
|
||||
$D4, $EC, $24, $00, $00, $00, $00, $0A
|
||||
$80, $1F, $24, $93, $23, $1D, $30, $BC
|
||||
$E1, $50, $80, $AC, $59, $85, $52, $55
|
||||
$CE, $38, $0A, $86, $43, $4C, $45, $41
|
||||
$D2, $2B, $84, $52, $45, $CD, $1D, $A0
|
||||
$80, $BD, $38, $14, $85, $AD, $30, $D3
|
||||
$17, $64, $81, $AB, $30, $D3, $85, $AB
|
||||
$30, $D3, $18, $5A, $85, $AD, $30, $D3
|
||||
$19, $54, $2F, $30, $E2, $85, $AA, $30
|
||||
$E2, $1A, $5A, $85, $AF, $30, $E2, $1B
|
||||
$54, $2F, $98, $52, $4E, $C4, $0A, $80
|
||||
$80, $12, $0A, $09, $29, $1A, $0A, $1A
|
||||
$85, $18, $13, $09, $80, $12, $01, $0B
|
||||
$31, $30, $61, $72, $0B, $04, $02, $03
|
||||
$05, $03, $1B, $1A, $19, $0B, $09, $06
|
||||
$0A, $00, $00, $1C, $17, $2F, $8F, $55
|
||||
$53, $D2, $80, $A8, $30, $BC, $31, $2A
|
||||
$31, $2A, $80, $A9, $2E, $2F, $A2, $12
|
||||
$2F, $C1, $2F, $80, $A8, $30, $BC, $80
|
||||
$A9, $2F, $83, $AC, $38, $BC, $0B, $2F
|
||||
$80, $A8, $52, $2F, $84, $BD, $09, $02
|
||||
$2F, $8E, $BC, $84, $BD, $09, $93, $2F
|
||||
$84, $BE, $09, $05, $2F, $09, $91, $2F
|
||||
$80, $BE, $84, $BD, $09, $06, $2F, $84
|
||||
$BC, $09, $95, $2F, $09, $04, $2F, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$20, $0D, $0F, $A0, $00, $20, $1D, $0F
|
||||
$20, $2C, $0F, $C9, $43, $D0, $03, $4C
|
||||
$85, $04, $C9, $57, $D0, $03, $4C, $BD
|
||||
$04, $A2, $2F, $20, $1D, $0F, $4C, $F8
|
||||
$0C, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$4D, $4B, $48, $42, $43, $2D, $38, $2D
|
||||
$52, $32, $20, $54, $49, $4E, $59, $20
|
||||
$42, $41, $53, $49, $43, $20, $36, $35
|
||||
$30, $32, $20, $50, $4F, $52, $54, $0D
|
||||
$0A, $56, $65, $72, $73, $69, $6F, $6E
|
||||
$3A, $20, $31, $2E, $30, $2E, $33, $2C
|
||||
$20, $32, $2F, $32, $30, $2F, $32, $30
|
||||
$31, $36, $0D, $0A, $28, $4E, $4F, $54
|
||||
$45, $3A, $20, $55, $73, $65, $20, $55
|
||||
$50, $50, $45, $52, $20, $43, $41, $53
|
||||
$45, $2E, $29, $0D, $0A, $42, $6F, $6F
|
||||
$74, $20, $28, $5B, $43, $5D, $6F, $6C
|
||||
$64, $2F, $5B, $57, $5D, $61, $72, $6D
|
||||
$29, $3F, $20, $07, $FF, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$86, $C3, $B1, $C2, $48, $C8, $B1, $C2
|
||||
$AA, $68, $A8, $8A, $60, $A2, $19, $A9
|
||||
$0D, $20, $31, $0F, $A9, $0A, $20, $31
|
||||
$0F, $CA, $D0, $FA, $60, $B9, $00, $0E
|
||||
$C9, $FF, $F0, $07, $20, $31, $0F, $C8
|
||||
$4C, $1D, $0F, $60, $AD, $00, $E0, $F0
|
||||
$FB, $85, $FE, $C9, $FF, $F0, $1E, $C9
|
||||
$00, $F0, $1A, $C9, $91, $F0, $16, $C9
|
||||
$93, $F0, $12, $C9, $80, $F0, $0E, $4C
|
||||
$50, $0F, $20, $F0, $FF, $A5, $FE, $60
|
||||
$A5, $FE, $8D, $00, $E0, $60, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
||||
$00, $00, $00, $00, $00, $00, $00, $00
|
@ -1,50 +1,50 @@
|
||||
; Basic test of char I/O emulation
|
||||
|
||||
.ORG $0200
|
||||
|
||||
CHRGET = $E000
|
||||
PUTCH = $E000
|
||||
TXTBUF = $0400
|
||||
CR = $0D
|
||||
NL = $0A
|
||||
|
||||
START: LDX #$00
|
||||
PR1: LDA PROMPT,X ;print prompt
|
||||
BEQ L0
|
||||
STA PUTCH
|
||||
INX
|
||||
BNE PR1
|
||||
L0: LDX #$00
|
||||
GETTXT: LDA CHRGET ;get text from input
|
||||
BEQ GETTXT
|
||||
CMP #CR
|
||||
BEQ L1
|
||||
CMP #NL
|
||||
BEQ L1
|
||||
STA PUTCH ;echo char
|
||||
STA TXTBUF,X ;store char
|
||||
INX
|
||||
BNE GETTXT
|
||||
L1: LDA #NL ; add line break
|
||||
STA TXTBUF,X
|
||||
STA PUTCH
|
||||
INX
|
||||
LDA #CR
|
||||
STA TXTBUF,X
|
||||
STA PUTCH
|
||||
INX
|
||||
LDA #$00 ; add null
|
||||
STA TXTBUF,X
|
||||
TAX
|
||||
PRINT: LDA TXTBUF,X ; print to output
|
||||
BEQ L2
|
||||
STA PUTCH
|
||||
INX
|
||||
BNE PRINT
|
||||
L2: BRK
|
||||
NOP
|
||||
JMP START
|
||||
PROMPT: .DB "Enter text:",0
|
||||
|
||||
|
||||
; Basic test of char I/O emulation
|
||||
|
||||
.ORG $0200
|
||||
|
||||
CHRGET = $E000
|
||||
PUTCH = $E000
|
||||
TXTBUF = $0400
|
||||
CR = $0D
|
||||
NL = $0A
|
||||
|
||||
START: LDX #$00
|
||||
PR1: LDA PROMPT,X ;print prompt
|
||||
BEQ L0
|
||||
STA PUTCH
|
||||
INX
|
||||
BNE PR1
|
||||
L0: LDX #$00
|
||||
GETTXT: LDA CHRGET ;get text from input
|
||||
BEQ GETTXT
|
||||
CMP #CR
|
||||
BEQ L1
|
||||
CMP #NL
|
||||
BEQ L1
|
||||
STA PUTCH ;echo char
|
||||
STA TXTBUF,X ;store char
|
||||
INX
|
||||
BNE GETTXT
|
||||
L1: LDA #NL ; add line break
|
||||
STA TXTBUF,X
|
||||
STA PUTCH
|
||||
INX
|
||||
LDA #CR
|
||||
STA TXTBUF,X
|
||||
STA PUTCH
|
||||
INX
|
||||
LDA #$00 ; add null
|
||||
STA TXTBUF,X
|
||||
TAX
|
||||
PRINT: LDA TXTBUF,X ; print to output
|
||||
BEQ L2
|
||||
STA PUTCH
|
||||
INX
|
||||
BNE PRINT
|
||||
L2: BRK
|
||||
NOP
|
||||
JMP START
|
||||
PROMPT: .DB "Enter text:",0
|
||||
|
||||
|
||||
|
@ -1,15 +1,15 @@
|
||||
; I/O test for MKBASIC VM.
|
||||
ORG
|
||||
$0200
|
||||
$A2 $00 $BD $4E $02 $F0 $06 $8D
|
||||
$00 $E0 $E8 $D0 $F5 $A2 $00 $AD
|
||||
$00 $E0 $F0 $FB $C9 $0D $F0 $0D
|
||||
$C9 $0A $F0 $09 $8D $00 $E0 $9D
|
||||
$00 $04 $E8 $D0 $EA $A9 $0A $9D
|
||||
$00 $04 $8D $00 $E0 $E8 $A9 $0D
|
||||
$9D $00 $04 $8D $00 $E0 $E8 $A9
|
||||
$00 $9D $00 $04 $AA $BD $00 $04
|
||||
$F0 $06 $8D $00 $E0 $E8 $D0 $F5
|
||||
$00 $00 $EA $4C $00 $02 $45 $6E
|
||||
$74 $65 $72 $20 $74 $65 $78 $74
|
||||
$3A $00 $00 $00 $00 $00 $00 $00
|
||||
; I/O test for MKBASIC VM.
|
||||
ORG
|
||||
$0200
|
||||
$A2 $00 $BD $4E $02 $F0 $06 $8D
|
||||
$00 $E0 $E8 $D0 $F5 $A2 $00 $AD
|
||||
$00 $E0 $F0 $FB $C9 $0D $F0 $0D
|
||||
$C9 $0A $F0 $09 $8D $00 $E0 $9D
|
||||
$00 $04 $E8 $D0 $EA $A9 $0A $9D
|
||||
$00 $04 $8D $00 $E0 $E8 $A9 $0D
|
||||
$9D $00 $04 $8D $00 $E0 $E8 $A9
|
||||
$00 $9D $00 $04 $AA $BD $00 $04
|
||||
$F0 $06 $8D $00 $E0 $E8 $D0 $F5
|
||||
$00 $00 $EA $4C $00 $02 $45 $6E
|
||||
$74 $65 $72 $20 $74 $65 $78 $74
|
||||
$3A $00 $00 $00 $00 $00 $00 $00
|
||||
|
1879
testall.asm
1879
testall.asm
File diff suppressed because it is too large
Load Diff
390
testall.dat
390
testall.dat
@ -1,195 +1,195 @@
|
||||
; Test 6502 emulation.
|
||||
ORG
|
||||
$4000
|
||||
$A9 $00 $8D $10 $02 $A9 $55 $8D
|
||||
$00 $02 $A9 $AA $8D $01 $02 $A9
|
||||
$FF $8D $02 $02 $A9 $6E $8D $03
|
||||
$02 $A9 $42 $8D $04 $02 $A9 $33
|
||||
$8D $05 $02 $A9 $9D $8D $06 $02
|
||||
$A9 $7F $8D $07 $02 $A9 $A5 $8D
|
||||
$08 $02 $A9 $1F $8D $09 $02 $A9
|
||||
$CE $8D $0A $02 $A9 $29 $8D $0B
|
||||
$02 $A9 $42 $8D $0C $02 $A9 $6C
|
||||
$8D $0D $02 $A9 $42 $8D $0E $02
|
||||
$A9 $55 $A2 $2A $A0 $73 $85 $81
|
||||
$A9 $01 $85 $61 $A9 $7E $A5 $81
|
||||
$8D $10 $09 $A9 $7E $AD $10 $09
|
||||
$95 $56 $A9 $7E $B5 $56 $84 $60
|
||||
$91 $60 $A9 $7E $B1 $60 $9D $FF
|
||||
$07 $A9 $7E $BD $FF $07 $99 $FF
|
||||
$07 $A9 $7E $B9 $FF $07 $81 $36
|
||||
$A9 $7E $A1 $36 $86 $50 $A6 $60
|
||||
$A4 $50 $8E $13 $09 $A2 $22 $AE
|
||||
$13 $09 $8C $14 $09 $A0 $99 $AC
|
||||
$14 $09 $94 $2D $96 $77 $A0 $99
|
||||
$B4 $2D $A2 $22 $B6 $77 $A0 $99
|
||||
$BC $A0 $08 $A2 $22 $BE $A1 $08
|
||||
$9D $00 $02 $AD $2A $02 $CD $00
|
||||
$02 $F0 $03 $4C $C0 $45 $A9 $FE
|
||||
$8D $10 $02 $A9 $55 $29 $53 $09
|
||||
$38 $49 $11 $85 $99 $A9 $B9 $85
|
||||
$10 $A9 $E7 $85 $11 $A9 $39 $85
|
||||
$12 $A5 $99 $25 $10 $05 $11 $45
|
||||
$12 $A2 $10 $85 $99 $A9 $BC $85
|
||||
$20 $A9 $31 $85 $21 $A9 $17 $85
|
||||
$22 $A5 $99 $35 $10 $15 $11 $55
|
||||
$12 $85 $99 $A9 $6F $8D $10 $01
|
||||
$A9 $3C $8D $11 $01 $A9 $27 $8D
|
||||
$12 $01 $A5 $99 $2D $10 $01 $0D
|
||||
$11 $01 $4D $12 $01 $85 $99 $A9
|
||||
$8A $8D $20 $01 $A9 $47 $8D $21
|
||||
$01 $A9 $8F $8D $22 $01 $A5 $99
|
||||
$3D $10 $01 $1D $11 $01 $5D $12
|
||||
$01 $A0 $20 $85 $99 $A9 $73 $8D
|
||||
$30 $01 $A9 $2A $8D $31 $01 $A9
|
||||
$F1 $8D $32 $01 $A5 $99 $39 $10
|
||||
$01 $19 $11 $01 $59 $12 $01 $85
|
||||
$99 $A9 $70 $85 $30 $A9 $01 $85
|
||||
$31 $A9 $71 $85 $32 $A9 $01 $85
|
||||
$33 $A9 $72 $85 $34 $A9 $01 $85
|
||||
$35 $A9 $C5 $8D $70 $01 $A9 $7C
|
||||
$8D $71 $01 $A9 $A1 $8D $72 $01
|
||||
$A5 $99 $21 $20 $01 $22 $41 $24
|
||||
$85 $99 $A9 $60 $85 $40 $A9 $01
|
||||
$85 $41 $A9 $61 $85 $42 $A9 $01
|
||||
$85 $43 $A9 $62 $85 $44 $A9 $01
|
||||
$85 $45 $A9 $37 $8D $50 $02 $A9
|
||||
$23 $8D $51 $02 $A9 $9D $8D $52
|
||||
$02 $A5 $99 $A0 $F0 $31 $40 $11
|
||||
$42 $51 $44 $85 $A9 $A5 $A9 $CD
|
||||
$01 $02 $F0 $08 $A9 $01 $8D $10
|
||||
$02 $4C $C0 $45 $A9 $FF $A2 $00
|
||||
$85 $90 $E6 $90 $E6 $90 $A5 $90
|
||||
$A6 $90 $95 $90 $F6 $90 $B5 $90
|
||||
$A6 $91 $9D $90 $01 $EE $92 $01
|
||||
$BD $90 $01 $AE $92 $01 $9D $90
|
||||
$01 $FE $90 $01 $BD $90 $01 $AE
|
||||
$93 $01 $9D $70 $01 $DE $70 $01
|
||||
$BD $70 $01 $AE $74 $01 $9D $70
|
||||
$01 $CE $73 $01 $BD $70 $01 $AE
|
||||
$73 $01 $95 $70 $D6 $70 $B5 $70
|
||||
$A6 $72 $95 $70 $C6 $71 $C6 $71
|
||||
$A5 $71 $CD $02 $02 $F0 $08 $A9
|
||||
$02 $8D $10 $02 $4C $C0 $45 $A9
|
||||
$4B $4A $0A $85 $50 $06 $50 $06
|
||||
$50 $46 $50 $A5 $50 $A6 $50 $09
|
||||
$C9 $85 $60 $16 $4C $56 $4C $56
|
||||
$4C $B5 $4C $A6 $60 $09 $41 $8D
|
||||
$2E $01 $5E $00 $01 $5E $00 $01
|
||||
$1E $00 $01 $BD $00 $01 $AE $2E
|
||||
$01 $09 $81 $9D $00 $01 $4E $36
|
||||
$01 $4E $36 $01 $0E $36 $01 $BD
|
||||
$00 $01 $2A $2A $6A $85 $70 $A6
|
||||
$70 $09 $03 $95 $0C $26 $C0 $66
|
||||
$C0 $66 $C0 $B5 $0C $A6 $C0 $85
|
||||
$D0 $36 $75 $36 $75 $76 $75 $A5
|
||||
$D0 $A6 $D0 $9D $00 $01 $2E $B7
|
||||
$01 $2E $B7 $01 $2E $B7 $01 $6E
|
||||
$B7 $01 $BD $00 $01 $AE $B7 $01
|
||||
$8D $DD $01 $3E $00 $01 $7E $00
|
||||
$01 $7E $00 $01 $AD $DD $01 $CD
|
||||
$03 $02 $F0 $08 $A9 $03 $8D $10
|
||||
$02 $4C $C0 $45 $A9 $E8 $85 $20
|
||||
$A9 $42 $85 $21 $A9 $00 $09 $03
|
||||
$4C $D5 $42 $09 $FF $09 $30 $20
|
||||
$E1 $42 $09 $42 $6C $20 $00 $09
|
||||
$FF $85 $30 $A6 $30 $A9 $00 $60
|
||||
$95 $0D $A5 $40 $CD $04 $02 $F0
|
||||
$08 $A9 $04 $8D $10 $02 $4C $C0
|
||||
$45 $A9 $35 $AA $CA $CA $E8 $8A
|
||||
$A8 $88 $88 $C8 $98 $AA $A9 $20
|
||||
$9A $A2 $10 $BA $8A $85 $40 $A5
|
||||
$40 $CD $05 $02 $F0 $08 $A9 $05
|
||||
$8D $10 $02 $4C $C0 $45 $2A $A9
|
||||
$6A $85 $50 $A9 $6B $85 $51 $A9
|
||||
$A1 $85 $60 $A9 $A2 $85 $61 $A9
|
||||
$FF $69 $FF $69 $FF $E9 $AE $85
|
||||
$40 $A6 $40 $75 $00 $F5 $01 $65
|
||||
$60 $E5 $61 $8D $20 $01 $A9 $4D
|
||||
$8D $21 $01 $A9 $23 $6D $20 $01
|
||||
$ED $21 $01 $85 $F0 $A6 $F0 $A9
|
||||
$64 $8D $24 $01 $A9 $62 $8D $25
|
||||
$01 $A9 $26 $7D $00 $01 $FD $01
|
||||
$01 $85 $F1 $A4 $F1 $A9 $E5 $8D
|
||||
$28 $01 $A9 $E9 $8D $29 $01 $A9
|
||||
$34 $79 $00 $01 $F9 $01 $01 $85
|
||||
$F2 $A6 $F2 $A9 $20 $85 $70 $A9
|
||||
$01 $85 $71 $A9 $24 $85 $72 $A9
|
||||
$01 $85 $73 $61 $41 $E1 $3F $85
|
||||
$F3 $A4 $F3 $A9 $DA $85 $80 $A9
|
||||
$00 $85 $81 $A9 $DC $85 $82 $A9
|
||||
$00 $85 $83 $A9 $AA $71 $80 $F1
|
||||
$82 $85 $30 $A5 $30 $CD $06 $02
|
||||
$F0 $08 $A9 $06 $8D $10 $02 $4C
|
||||
$C0 $45 $A9 $00 $85 $34 $A9 $FF
|
||||
$8D $30 $01 $A9 $99 $8D $9D $01
|
||||
$A9 $DB $8D $99 $01 $A9 $2F $85
|
||||
$32 $A9 $32 $85 $4F $A9 $30 $85
|
||||
$33 $A9 $70 $85 $AF $A9 $18 $85
|
||||
$30 $C9 $18 $F0 $02 $29 $00 $09
|
||||
$01 $C5 $30 $D0 $02 $29 $00 $A2
|
||||
$00 $CD $30 $01 $F0 $04 $85 $40
|
||||
$A6 $40 $D5 $27 $D0 $06 $09 $84
|
||||
$85 $41 $A6 $41 $29 $DB $DD $00
|
||||
$01 $F0 $02 $29 $00 $85 $42 $A4
|
||||
$42 $29 $00 $D9 $00 $01 $D0 $02
|
||||
$09 $0F $85 $43 $A6 $43 $09 $24
|
||||
$C1 $40 $F0 $02 $09 $7F $85 $44
|
||||
$A4 $44 $49 $0F $D1 $33 $D0 $04
|
||||
$A5 $44 $85 $15 $A5 $15 $CD $07
|
||||
$02 $F0 $08 $A9 $07 $8D $10 $02
|
||||
$4C $C0 $45 $A9 $A5 $85 $20 $8D
|
||||
$20 $01 $A9 $5A $85 $21 $A2 $A5
|
||||
$E0 $A5 $F0 $02 $A2 $01 $E4 $20
|
||||
$F0 $02 $A2 $02 $EC $20 $01 $F0
|
||||
$02 $A2 $03 $86 $30 $A4 $30 $C0
|
||||
$A5 $F0 $02 $A0 $04 $C4 $20 $F0
|
||||
$02 $A0 $05 $CC $20 $01 $F0 $02
|
||||
$A0 $06 $84 $31 $A5 $31 $24 $20
|
||||
$D0 $02 $A9 $07 $2C $20 $01 $D0
|
||||
$02 $A9 $08 $24 $21 $D0 $02 $85
|
||||
$42 $A5 $42 $CD $08 $02 $F0 $08
|
||||
$A9 $08 $8D $10 $02 $4C $C0 $45
|
||||
$A9 $54 $85 $32 $A9 $B3 $85 $A1
|
||||
$A9 $87 $85 $43 $A2 $A1 $10 $02
|
||||
$A2 $32 $B4 $00 $10 $04 $A9 $05
|
||||
$A6 $A1 $30 $02 $E9 $03 $30 $02
|
||||
$A9 $41 $49 $30 $85 $32 $75 $00
|
||||
$50 $02 $A9 $03 $85 $54 $B6 $00
|
||||
$75 $51 $50 $02 $A9 $E5 $75 $40
|
||||
$70 $05 $99 $01 $00 $65 $55 $70
|
||||
$02 $A9 $00 $69 $F0 $90 $04 $85
|
||||
$60 $65 $43 $90 $02 $A9 $FF $65
|
||||
$54 $B0 $04 $69 $87 $A6 $60 $B0
|
||||
$02 $A9 $00 $95 $73 $A5 $80 $CD
|
||||
$09 $02 $F0 $08 $A9 $09 $8D $10
|
||||
$02 $4C $C0 $45 $69 $00 $A9 $99
|
||||
$69 $87 $18 $EA $90 $04 $69 $60
|
||||
$69 $93 $38 $EA $90 $01 $B8 $50
|
||||
$02 $A9 $00 $69 $AD $EA $85 $30
|
||||
$A5 $30 $CD $0A $02 $F0 $08 $A9
|
||||
$0A $8D $10 $02 $4C $C0 $45 $69
|
||||
$01 $A9 $27 $69 $01 $38 $08 $18
|
||||
$28 $69 $00 $48 $A9 $00 $68 $85
|
||||
$30 $A5 $30 $CD $0B $02 $F0 $08
|
||||
$A9 $0B $8D $10 $02 $4C $C0 $45
|
||||
$18 $A9 $42 $90 $04 $85 $33 $B0
|
||||
$0A $A9 $45 $48 $A9 $61 $48 $38
|
||||
$08 $18 $40 $A5 $33 $CD $0C $02
|
||||
$F0 $08 $A9 $0C $8D $10 $02 $4C
|
||||
$C0 $45 $69 $01 $78 $F8 $08 $68
|
||||
$85 $20 $58 $D8 $08 $68 $65 $20
|
||||
$85 $21 $A5 $21 $CD $0D $02 $F0
|
||||
$08 $A9 $0D $8D $10 $02 $4C $C0
|
||||
$45 $A9 $41 $85 $60 $E6 $60 $A5
|
||||
$60 $CD $0E $02 $F0 $08 $A9 $0E
|
||||
$8D $10 $02 $4C $C0 $45 $A9 $FE
|
||||
$CD $10 $02 $D0 $03 $EE $10 $02
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
; Test 6502 emulation.
|
||||
ORG
|
||||
$4000
|
||||
$A9 $00 $8D $10 $02 $A9 $55 $8D
|
||||
$00 $02 $A9 $AA $8D $01 $02 $A9
|
||||
$FF $8D $02 $02 $A9 $6E $8D $03
|
||||
$02 $A9 $42 $8D $04 $02 $A9 $33
|
||||
$8D $05 $02 $A9 $9D $8D $06 $02
|
||||
$A9 $7F $8D $07 $02 $A9 $A5 $8D
|
||||
$08 $02 $A9 $1F $8D $09 $02 $A9
|
||||
$CE $8D $0A $02 $A9 $29 $8D $0B
|
||||
$02 $A9 $42 $8D $0C $02 $A9 $6C
|
||||
$8D $0D $02 $A9 $42 $8D $0E $02
|
||||
$A9 $55 $A2 $2A $A0 $73 $85 $81
|
||||
$A9 $01 $85 $61 $A9 $7E $A5 $81
|
||||
$8D $10 $09 $A9 $7E $AD $10 $09
|
||||
$95 $56 $A9 $7E $B5 $56 $84 $60
|
||||
$91 $60 $A9 $7E $B1 $60 $9D $FF
|
||||
$07 $A9 $7E $BD $FF $07 $99 $FF
|
||||
$07 $A9 $7E $B9 $FF $07 $81 $36
|
||||
$A9 $7E $A1 $36 $86 $50 $A6 $60
|
||||
$A4 $50 $8E $13 $09 $A2 $22 $AE
|
||||
$13 $09 $8C $14 $09 $A0 $99 $AC
|
||||
$14 $09 $94 $2D $96 $77 $A0 $99
|
||||
$B4 $2D $A2 $22 $B6 $77 $A0 $99
|
||||
$BC $A0 $08 $A2 $22 $BE $A1 $08
|
||||
$9D $00 $02 $AD $2A $02 $CD $00
|
||||
$02 $F0 $03 $4C $C0 $45 $A9 $FE
|
||||
$8D $10 $02 $A9 $55 $29 $53 $09
|
||||
$38 $49 $11 $85 $99 $A9 $B9 $85
|
||||
$10 $A9 $E7 $85 $11 $A9 $39 $85
|
||||
$12 $A5 $99 $25 $10 $05 $11 $45
|
||||
$12 $A2 $10 $85 $99 $A9 $BC $85
|
||||
$20 $A9 $31 $85 $21 $A9 $17 $85
|
||||
$22 $A5 $99 $35 $10 $15 $11 $55
|
||||
$12 $85 $99 $A9 $6F $8D $10 $01
|
||||
$A9 $3C $8D $11 $01 $A9 $27 $8D
|
||||
$12 $01 $A5 $99 $2D $10 $01 $0D
|
||||
$11 $01 $4D $12 $01 $85 $99 $A9
|
||||
$8A $8D $20 $01 $A9 $47 $8D $21
|
||||
$01 $A9 $8F $8D $22 $01 $A5 $99
|
||||
$3D $10 $01 $1D $11 $01 $5D $12
|
||||
$01 $A0 $20 $85 $99 $A9 $73 $8D
|
||||
$30 $01 $A9 $2A $8D $31 $01 $A9
|
||||
$F1 $8D $32 $01 $A5 $99 $39 $10
|
||||
$01 $19 $11 $01 $59 $12 $01 $85
|
||||
$99 $A9 $70 $85 $30 $A9 $01 $85
|
||||
$31 $A9 $71 $85 $32 $A9 $01 $85
|
||||
$33 $A9 $72 $85 $34 $A9 $01 $85
|
||||
$35 $A9 $C5 $8D $70 $01 $A9 $7C
|
||||
$8D $71 $01 $A9 $A1 $8D $72 $01
|
||||
$A5 $99 $21 $20 $01 $22 $41 $24
|
||||
$85 $99 $A9 $60 $85 $40 $A9 $01
|
||||
$85 $41 $A9 $61 $85 $42 $A9 $01
|
||||
$85 $43 $A9 $62 $85 $44 $A9 $01
|
||||
$85 $45 $A9 $37 $8D $50 $02 $A9
|
||||
$23 $8D $51 $02 $A9 $9D $8D $52
|
||||
$02 $A5 $99 $A0 $F0 $31 $40 $11
|
||||
$42 $51 $44 $85 $A9 $A5 $A9 $CD
|
||||
$01 $02 $F0 $08 $A9 $01 $8D $10
|
||||
$02 $4C $C0 $45 $A9 $FF $A2 $00
|
||||
$85 $90 $E6 $90 $E6 $90 $A5 $90
|
||||
$A6 $90 $95 $90 $F6 $90 $B5 $90
|
||||
$A6 $91 $9D $90 $01 $EE $92 $01
|
||||
$BD $90 $01 $AE $92 $01 $9D $90
|
||||
$01 $FE $90 $01 $BD $90 $01 $AE
|
||||
$93 $01 $9D $70 $01 $DE $70 $01
|
||||
$BD $70 $01 $AE $74 $01 $9D $70
|
||||
$01 $CE $73 $01 $BD $70 $01 $AE
|
||||
$73 $01 $95 $70 $D6 $70 $B5 $70
|
||||
$A6 $72 $95 $70 $C6 $71 $C6 $71
|
||||
$A5 $71 $CD $02 $02 $F0 $08 $A9
|
||||
$02 $8D $10 $02 $4C $C0 $45 $A9
|
||||
$4B $4A $0A $85 $50 $06 $50 $06
|
||||
$50 $46 $50 $A5 $50 $A6 $50 $09
|
||||
$C9 $85 $60 $16 $4C $56 $4C $56
|
||||
$4C $B5 $4C $A6 $60 $09 $41 $8D
|
||||
$2E $01 $5E $00 $01 $5E $00 $01
|
||||
$1E $00 $01 $BD $00 $01 $AE $2E
|
||||
$01 $09 $81 $9D $00 $01 $4E $36
|
||||
$01 $4E $36 $01 $0E $36 $01 $BD
|
||||
$00 $01 $2A $2A $6A $85 $70 $A6
|
||||
$70 $09 $03 $95 $0C $26 $C0 $66
|
||||
$C0 $66 $C0 $B5 $0C $A6 $C0 $85
|
||||
$D0 $36 $75 $36 $75 $76 $75 $A5
|
||||
$D0 $A6 $D0 $9D $00 $01 $2E $B7
|
||||
$01 $2E $B7 $01 $2E $B7 $01 $6E
|
||||
$B7 $01 $BD $00 $01 $AE $B7 $01
|
||||
$8D $DD $01 $3E $00 $01 $7E $00
|
||||
$01 $7E $00 $01 $AD $DD $01 $CD
|
||||
$03 $02 $F0 $08 $A9 $03 $8D $10
|
||||
$02 $4C $C0 $45 $A9 $E8 $85 $20
|
||||
$A9 $42 $85 $21 $A9 $00 $09 $03
|
||||
$4C $D5 $42 $09 $FF $09 $30 $20
|
||||
$E1 $42 $09 $42 $6C $20 $00 $09
|
||||
$FF $85 $30 $A6 $30 $A9 $00 $60
|
||||
$95 $0D $A5 $40 $CD $04 $02 $F0
|
||||
$08 $A9 $04 $8D $10 $02 $4C $C0
|
||||
$45 $A9 $35 $AA $CA $CA $E8 $8A
|
||||
$A8 $88 $88 $C8 $98 $AA $A9 $20
|
||||
$9A $A2 $10 $BA $8A $85 $40 $A5
|
||||
$40 $CD $05 $02 $F0 $08 $A9 $05
|
||||
$8D $10 $02 $4C $C0 $45 $2A $A9
|
||||
$6A $85 $50 $A9 $6B $85 $51 $A9
|
||||
$A1 $85 $60 $A9 $A2 $85 $61 $A9
|
||||
$FF $69 $FF $69 $FF $E9 $AE $85
|
||||
$40 $A6 $40 $75 $00 $F5 $01 $65
|
||||
$60 $E5 $61 $8D $20 $01 $A9 $4D
|
||||
$8D $21 $01 $A9 $23 $6D $20 $01
|
||||
$ED $21 $01 $85 $F0 $A6 $F0 $A9
|
||||
$64 $8D $24 $01 $A9 $62 $8D $25
|
||||
$01 $A9 $26 $7D $00 $01 $FD $01
|
||||
$01 $85 $F1 $A4 $F1 $A9 $E5 $8D
|
||||
$28 $01 $A9 $E9 $8D $29 $01 $A9
|
||||
$34 $79 $00 $01 $F9 $01 $01 $85
|
||||
$F2 $A6 $F2 $A9 $20 $85 $70 $A9
|
||||
$01 $85 $71 $A9 $24 $85 $72 $A9
|
||||
$01 $85 $73 $61 $41 $E1 $3F $85
|
||||
$F3 $A4 $F3 $A9 $DA $85 $80 $A9
|
||||
$00 $85 $81 $A9 $DC $85 $82 $A9
|
||||
$00 $85 $83 $A9 $AA $71 $80 $F1
|
||||
$82 $85 $30 $A5 $30 $CD $06 $02
|
||||
$F0 $08 $A9 $06 $8D $10 $02 $4C
|
||||
$C0 $45 $A9 $00 $85 $34 $A9 $FF
|
||||
$8D $30 $01 $A9 $99 $8D $9D $01
|
||||
$A9 $DB $8D $99 $01 $A9 $2F $85
|
||||
$32 $A9 $32 $85 $4F $A9 $30 $85
|
||||
$33 $A9 $70 $85 $AF $A9 $18 $85
|
||||
$30 $C9 $18 $F0 $02 $29 $00 $09
|
||||
$01 $C5 $30 $D0 $02 $29 $00 $A2
|
||||
$00 $CD $30 $01 $F0 $04 $85 $40
|
||||
$A6 $40 $D5 $27 $D0 $06 $09 $84
|
||||
$85 $41 $A6 $41 $29 $DB $DD $00
|
||||
$01 $F0 $02 $29 $00 $85 $42 $A4
|
||||
$42 $29 $00 $D9 $00 $01 $D0 $02
|
||||
$09 $0F $85 $43 $A6 $43 $09 $24
|
||||
$C1 $40 $F0 $02 $09 $7F $85 $44
|
||||
$A4 $44 $49 $0F $D1 $33 $D0 $04
|
||||
$A5 $44 $85 $15 $A5 $15 $CD $07
|
||||
$02 $F0 $08 $A9 $07 $8D $10 $02
|
||||
$4C $C0 $45 $A9 $A5 $85 $20 $8D
|
||||
$20 $01 $A9 $5A $85 $21 $A2 $A5
|
||||
$E0 $A5 $F0 $02 $A2 $01 $E4 $20
|
||||
$F0 $02 $A2 $02 $EC $20 $01 $F0
|
||||
$02 $A2 $03 $86 $30 $A4 $30 $C0
|
||||
$A5 $F0 $02 $A0 $04 $C4 $20 $F0
|
||||
$02 $A0 $05 $CC $20 $01 $F0 $02
|
||||
$A0 $06 $84 $31 $A5 $31 $24 $20
|
||||
$D0 $02 $A9 $07 $2C $20 $01 $D0
|
||||
$02 $A9 $08 $24 $21 $D0 $02 $85
|
||||
$42 $A5 $42 $CD $08 $02 $F0 $08
|
||||
$A9 $08 $8D $10 $02 $4C $C0 $45
|
||||
$A9 $54 $85 $32 $A9 $B3 $85 $A1
|
||||
$A9 $87 $85 $43 $A2 $A1 $10 $02
|
||||
$A2 $32 $B4 $00 $10 $04 $A9 $05
|
||||
$A6 $A1 $30 $02 $E9 $03 $30 $02
|
||||
$A9 $41 $49 $30 $85 $32 $75 $00
|
||||
$50 $02 $A9 $03 $85 $54 $B6 $00
|
||||
$75 $51 $50 $02 $A9 $E5 $75 $40
|
||||
$70 $05 $99 $01 $00 $65 $55 $70
|
||||
$02 $A9 $00 $69 $F0 $90 $04 $85
|
||||
$60 $65 $43 $90 $02 $A9 $FF $65
|
||||
$54 $B0 $04 $69 $87 $A6 $60 $B0
|
||||
$02 $A9 $00 $95 $73 $A5 $80 $CD
|
||||
$09 $02 $F0 $08 $A9 $09 $8D $10
|
||||
$02 $4C $C0 $45 $69 $00 $A9 $99
|
||||
$69 $87 $18 $EA $90 $04 $69 $60
|
||||
$69 $93 $38 $EA $90 $01 $B8 $50
|
||||
$02 $A9 $00 $69 $AD $EA $85 $30
|
||||
$A5 $30 $CD $0A $02 $F0 $08 $A9
|
||||
$0A $8D $10 $02 $4C $C0 $45 $69
|
||||
$01 $A9 $27 $69 $01 $38 $08 $18
|
||||
$28 $69 $00 $48 $A9 $00 $68 $85
|
||||
$30 $A5 $30 $CD $0B $02 $F0 $08
|
||||
$A9 $0B $8D $10 $02 $4C $C0 $45
|
||||
$18 $A9 $42 $90 $04 $85 $33 $B0
|
||||
$0A $A9 $45 $48 $A9 $61 $48 $38
|
||||
$08 $18 $40 $A5 $33 $CD $0C $02
|
||||
$F0 $08 $A9 $0C $8D $10 $02 $4C
|
||||
$C0 $45 $69 $01 $78 $F8 $08 $68
|
||||
$85 $20 $58 $D8 $08 $68 $65 $20
|
||||
$85 $21 $A5 $21 $CD $0D $02 $F0
|
||||
$08 $A9 $0D $8D $10 $02 $4C $C0
|
||||
$45 $A9 $41 $85 $60 $E6 $60 $A5
|
||||
$60 $CD $0E $02 $F0 $08 $A9 $0E
|
||||
$8D $10 $02 $4C $C0 $45 $A9 $FE
|
||||
$CD $10 $02 $D0 $03 $EE $10 $02
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
|
960
testall.lst
Normal file
960
testall.lst
Normal file
@ -0,0 +1,960 @@
|
||||
ca65 V2.13.2 - (C) Copyright 1998-2005 Ullrich von Bassewitz
|
||||
Main file : testall.asm
|
||||
Current file: testall.asm
|
||||
|
||||
000000r 1 ; Testing 6502 opcodes.
|
||||
000000r 1 ; Copied and adapted from AllSuiteA.asm from project hmc-6502:
|
||||
000000r 1 ; https://code.google.com/archive/p/hmc-6502/
|
||||
000000r 1 ; EXPECTED FINAL RESULTS: $0210 = FF
|
||||
000000r 1 ; (any other number will be the test that failed)
|
||||
000000r 1 ; To build with cl65:
|
||||
000000r 1 ; cl65 -C testall_cl65.cfg -l --start-addr 16384 -t none -o tall.bin testall.asm
|
||||
000000r 1 ; then load to simulator from debug console with 'L B TALL.BIN'
|
||||
000000r 1 ; and execute with 'X 4000'.
|
||||
000000r 1
|
||||
000000r 1 .segment "CODE1"
|
||||
000000r 1
|
||||
000000r 1 .segment "CODE2"
|
||||
000000r 1
|
||||
000000r 1 .ORG $4000
|
||||
004000 1
|
||||
004000 1 start:
|
||||
004000 1 ; initialize:
|
||||
004000 1 A9 00 LDA #$00
|
||||
004002 1 8D 10 02 STA $0210
|
||||
004005 1 ; store each test's expected
|
||||
004005 1 A9 55 LDA #$55
|
||||
004007 1 8D 00 02 STA $0200
|
||||
00400A 1 A9 AA LDA #$AA
|
||||
00400C 1 8D 01 02 STA $0201
|
||||
00400F 1 A9 FF LDA #$FF
|
||||
004011 1 8D 02 02 STA $0202
|
||||
004014 1 A9 6E LDA #$6E
|
||||
004016 1 8D 03 02 STA $0203
|
||||
004019 1 A9 42 LDA #$42
|
||||
00401B 1 8D 04 02 STA $0204
|
||||
00401E 1 A9 33 LDA #$33
|
||||
004020 1 8D 05 02 STA $0205
|
||||
004023 1 A9 9D LDA #$9D
|
||||
004025 1 8D 06 02 STA $0206
|
||||
004028 1 A9 7F LDA #$7F
|
||||
00402A 1 8D 07 02 STA $0207
|
||||
00402D 1 A9 A5 LDA #$A5
|
||||
00402F 1 8D 08 02 STA $0208
|
||||
004032 1 A9 1F LDA #$1F
|
||||
004034 1 8D 09 02 STA $0209
|
||||
004037 1 A9 CE LDA #$CE
|
||||
004039 1 8D 0A 02 STA $020A
|
||||
00403C 1 A9 29 LDA #$29
|
||||
00403E 1 8D 0B 02 STA $020B
|
||||
004041 1 A9 42 LDA #$42
|
||||
004043 1 8D 0C 02 STA $020C
|
||||
004046 1 A9 6C LDA #$6C
|
||||
004048 1 8D 0D 02 STA $020D
|
||||
00404B 1 A9 42 LDA #$42
|
||||
00404D 1 8D 0E 02 STA $020E
|
||||
004050 1
|
||||
004050 1
|
||||
004050 1 ; expected result: $022A = 0x55
|
||||
004050 1 test00:
|
||||
004050 1 A9 55 LDA #85
|
||||
004052 1 A2 2A LDX #42
|
||||
004054 1 A0 73 LDY #115
|
||||
004056 1 85 81 STA $81
|
||||
004058 1 A9 01 LDA #$01
|
||||
00405A 1 85 61 STA $61
|
||||
00405C 1 A9 7E LDA #$7E
|
||||
00405E 1 A5 81 LDA $81
|
||||
004060 1 8D 10 09 STA $0910
|
||||
004063 1 A9 7E LDA #$7E
|
||||
004065 1 AD 10 09 LDA $0910
|
||||
004068 1 95 56 STA $56,X
|
||||
00406A 1 A9 7E LDA #$7E
|
||||
00406C 1 B5 56 LDA $56,X
|
||||
00406E 1 84 60 STY $60
|
||||
004070 1 91 60 STA ($60),Y
|
||||
004072 1 A9 7E LDA #$7E
|
||||
004074 1 B1 60 LDA ($60),Y
|
||||
004076 1 9D FF 07 STA $07ff,X
|
||||
004079 1 A9 7E LDA #$7E
|
||||
00407B 1 BD FF 07 LDA $07ff,X
|
||||
00407E 1 99 FF 07 STA $07ff,Y
|
||||
004081 1 A9 7E LDA #$7E
|
||||
004083 1 B9 FF 07 LDA $07ff,Y
|
||||
004086 1 81 36 STA ($36,X)
|
||||
004088 1 A9 7E LDA #$7E
|
||||
00408A 1 A1 36 LDA ($36,X)
|
||||
00408C 1 86 50 STX $50
|
||||
00408E 1 A6 60 LDX $60
|
||||
004090 1 A4 50 LDY $50
|
||||
004092 1 8E 13 09 STX $0913
|
||||
004095 1 A2 22 LDX #$22
|
||||
004097 1 AE 13 09 LDX $0913
|
||||
00409A 1 8C 14 09 STY $0914
|
||||
00409D 1 A0 99 LDY #$99
|
||||
00409F 1 AC 14 09 LDY $0914
|
||||
0040A2 1 94 2D STY $2D,X
|
||||
0040A4 1 96 77 STX $77,Y
|
||||
0040A6 1 A0 99 LDY #$99
|
||||
0040A8 1 B4 2D LDY $2D,X
|
||||
0040AA 1 A2 22 LDX #$22
|
||||
0040AC 1 B6 77 LDX $77,Y
|
||||
0040AE 1 A0 99 LDY #$99
|
||||
0040B0 1 BC A0 08 LDY $08A0,X
|
||||
0040B3 1 A2 22 LDX #$22
|
||||
0040B5 1 BE A1 08 LDX $08A1,Y
|
||||
0040B8 1 9D 00 02 STA $0200,X
|
||||
0040BB 1
|
||||
0040BB 1 ; CHECK test00:
|
||||
0040BB 1 AD 2A 02 LDA $022A
|
||||
0040BE 1 CD 00 02 CMP $0200
|
||||
0040C1 1 F0 03 BEQ test00pass
|
||||
0040C3 1 4C C0 45 JMP theend
|
||||
0040C6 1 test00pass:
|
||||
0040C6 1 A9 FE LDA #$FE
|
||||
0040C8 1 8D 10 02 STA $0210
|
||||
0040CB 1
|
||||
0040CB 1
|
||||
0040CB 1 ; expected result: $A9 = 0xAA
|
||||
0040CB 1 test01:
|
||||
0040CB 1 ; imm
|
||||
0040CB 1 A9 55 LDA #85
|
||||
0040CD 1 29 53 AND #83
|
||||
0040CF 1 09 38 ORA #56
|
||||
0040D1 1 49 11 EOR #17
|
||||
0040D3 1
|
||||
0040D3 1 ; zpg
|
||||
0040D3 1 85 99 STA $99
|
||||
0040D5 1 A9 B9 LDA #185
|
||||
0040D7 1 85 10 STA $10
|
||||
0040D9 1 A9 E7 LDA #231
|
||||
0040DB 1 85 11 STA $11
|
||||
0040DD 1 A9 39 LDA #57
|
||||
0040DF 1 85 12 STA $12
|
||||
0040E1 1 A5 99 LDA $99
|
||||
0040E3 1 25 10 AND $10
|
||||
0040E5 1 05 11 ORA $11
|
||||
0040E7 1 45 12 EOR $12
|
||||
0040E9 1
|
||||
0040E9 1 ; zpx
|
||||
0040E9 1 A2 10 LDX #16
|
||||
0040EB 1 85 99 STA $99
|
||||
0040ED 1 A9 BC LDA #188
|
||||
0040EF 1 85 20 STA $20
|
||||
0040F1 1 A9 31 LDA #49
|
||||
0040F3 1 85 21 STA $21
|
||||
0040F5 1 A9 17 LDA #23
|
||||
0040F7 1 85 22 STA $22
|
||||
0040F9 1 A5 99 LDA $99
|
||||
0040FB 1 35 10 AND $10,X
|
||||
0040FD 1 15 11 ORA $11,X
|
||||
0040FF 1 55 12 EOR $12,X
|
||||
004101 1
|
||||
004101 1 ; abs
|
||||
004101 1 85 99 STA $99
|
||||
004103 1 A9 6F LDA #111
|
||||
004105 1 8D 10 01 STA $0110
|
||||
004108 1 A9 3C LDA #60
|
||||
00410A 1 8D 11 01 STA $0111
|
||||
00410D 1 A9 27 LDA #39
|
||||
00410F 1 8D 12 01 STA $0112
|
||||
004112 1 A5 99 LDA $99
|
||||
004114 1 2D 10 01 AND $0110
|
||||
004117 1 0D 11 01 ORA $0111
|
||||
00411A 1 4D 12 01 EOR $0112
|
||||
00411D 1
|
||||
00411D 1 ; abx
|
||||
00411D 1 85 99 STA $99
|
||||
00411F 1 A9 8A LDA #138
|
||||
004121 1 8D 20 01 STA $0120
|
||||
004124 1 A9 47 LDA #71
|
||||
004126 1 8D 21 01 STA $0121
|
||||
004129 1 A9 8F LDA #143
|
||||
00412B 1 8D 22 01 STA $0122
|
||||
00412E 1 A5 99 LDA $99
|
||||
004130 1 3D 10 01 AND $0110,X
|
||||
004133 1 1D 11 01 ORA $0111,X
|
||||
004136 1 5D 12 01 EOR $0112,X
|
||||
004139 1
|
||||
004139 1 ; aby
|
||||
004139 1 A0 20 LDY #32
|
||||
00413B 1 85 99 STA $99
|
||||
00413D 1 A9 73 LDA #115
|
||||
00413F 1 8D 30 01 STA $0130
|
||||
004142 1 A9 2A LDA #42
|
||||
004144 1 8D 31 01 STA $0131
|
||||
004147 1 A9 F1 LDA #241
|
||||
004149 1 8D 32 01 STA $0132
|
||||
00414C 1 A5 99 LDA $99
|
||||
00414E 1 39 10 01 AND $0110,Y
|
||||
004151 1 19 11 01 ORA $0111,Y
|
||||
004154 1 59 12 01 EOR $0112,Y
|
||||
004157 1
|
||||
004157 1 ; idx
|
||||
004157 1 85 99 STA $99
|
||||
004159 1 A9 70 LDA #112
|
||||
00415B 1 85 30 STA $30
|
||||
00415D 1 A9 01 LDA #$01
|
||||
00415F 1 85 31 STA $31
|
||||
004161 1 A9 71 LDA #113
|
||||
004163 1 85 32 STA $32
|
||||
004165 1 A9 01 LDA #$01
|
||||
004167 1 85 33 STA $33
|
||||
004169 1 A9 72 LDA #114
|
||||
00416B 1 85 34 STA $34
|
||||
00416D 1 A9 01 LDA #$01
|
||||
00416F 1 85 35 STA $35
|
||||
004171 1 A9 C5 LDA #197
|
||||
004173 1 8D 70 01 STA $0170
|
||||
004176 1 A9 7C LDA #124
|
||||
004178 1 8D 71 01 STA $0171
|
||||
00417B 1 A9 A1 LDA #161
|
||||
00417D 1 8D 72 01 STA $0172
|
||||
004180 1 A5 99 LDA $99
|
||||
004182 1 21 20 AND ($20,X)
|
||||
004184 1 01 22 ORA ($22,X)
|
||||
004186 1 41 24 EOR ($24,X)
|
||||
004188 1
|
||||
004188 1 ; idy
|
||||
004188 1 85 99 STA $99
|
||||
00418A 1 A9 60 LDA #96
|
||||
00418C 1 85 40 STA $40
|
||||
00418E 1 A9 01 LDA #$01
|
||||
004190 1 85 41 STA $41
|
||||
004192 1 A9 61 LDA #97
|
||||
004194 1 85 42 STA $42
|
||||
004196 1 A9 01 LDA #$01
|
||||
004198 1 85 43 STA $43
|
||||
00419A 1 A9 62 LDA #98
|
||||
00419C 1 85 44 STA $44
|
||||
00419E 1 A9 01 LDA #$01
|
||||
0041A0 1 85 45 STA $45
|
||||
0041A2 1 A9 37 LDA #55
|
||||
0041A4 1 8D 50 02 STA $0250
|
||||
0041A7 1 A9 23 LDA #35
|
||||
0041A9 1 8D 51 02 STA $0251
|
||||
0041AC 1 A9 9D LDA #157
|
||||
0041AE 1 8D 52 02 STA $0252
|
||||
0041B1 1 A5 99 LDA $99
|
||||
0041B3 1 A0 F0 LDY #$F0
|
||||
0041B5 1 31 40 AND ($40),Y
|
||||
0041B7 1 11 42 ORA ($42),Y
|
||||
0041B9 1 51 44 EOR ($44),Y
|
||||
0041BB 1
|
||||
0041BB 1 85 A9 STA $A9
|
||||
0041BD 1
|
||||
0041BD 1 ; CHECK test01
|
||||
0041BD 1 A5 A9 LDA $A9
|
||||
0041BF 1 CD 01 02 CMP $0201
|
||||
0041C2 1 F0 08 BEQ test02
|
||||
0041C4 1 A9 01 LDA #$01
|
||||
0041C6 1 8D 10 02 STA $0210
|
||||
0041C9 1 4C C0 45 JMP theend
|
||||
0041CC 1
|
||||
0041CC 1
|
||||
0041CC 1 ; expected result: $71 = 0xFF
|
||||
0041CC 1 test02:
|
||||
0041CC 1 A9 FF LDA #$FF
|
||||
0041CE 1 A2 00 LDX #$00
|
||||
0041D0 1
|
||||
0041D0 1 85 90 STA $90
|
||||
0041D2 1 E6 90 INC $90
|
||||
0041D4 1 E6 90 INC $90
|
||||
0041D6 1 A5 90 LDA $90
|
||||
0041D8 1 A6 90 LDX $90
|
||||
0041DA 1
|
||||
0041DA 1 95 90 STA $90,X
|
||||
0041DC 1 F6 90 INC $90,X
|
||||
0041DE 1 B5 90 LDA $90,X
|
||||
0041E0 1 A6 91 LDX $91
|
||||
0041E2 1
|
||||
0041E2 1 9D 90 01 STA $0190,X
|
||||
0041E5 1 EE 92 01 INC $0192
|
||||
0041E8 1 BD 90 01 LDA $0190,X
|
||||
0041EB 1 AE 92 01 LDX $0192
|
||||
0041EE 1
|
||||
0041EE 1 9D 90 01 STA $0190,X
|
||||
0041F1 1 FE 90 01 INC $0190,X
|
||||
0041F4 1 BD 90 01 LDA $0190,X
|
||||
0041F7 1 AE 93 01 LDX $0193
|
||||
0041FA 1
|
||||
0041FA 1 9D 70 01 STA $0170,X
|
||||
0041FD 1 DE 70 01 DEC $0170,X
|
||||
004200 1 BD 70 01 LDA $0170,X
|
||||
004203 1 AE 74 01 LDX $0174
|
||||
004206 1
|
||||
004206 1 9D 70 01 STA $0170,X
|
||||
004209 1 CE 73 01 DEC $0173
|
||||
00420C 1 BD 70 01 LDA $0170,X
|
||||
00420F 1 AE 73 01 LDX $0173
|
||||
004212 1
|
||||
004212 1 95 70 STA $70,X
|
||||
004214 1 D6 70 DEC $70,X
|
||||
004216 1 B5 70 LDA $70,X
|
||||
004218 1 A6 72 LDX $72
|
||||
00421A 1
|
||||
00421A 1 95 70 STA $70,X
|
||||
00421C 1 C6 71 DEC $71
|
||||
00421E 1 C6 71 DEC $71
|
||||
004220 1
|
||||
004220 1 ; CHECK test02
|
||||
004220 1 A5 71 LDA $71
|
||||
004222 1 CD 02 02 CMP $0202
|
||||
004225 1 F0 08 BEQ test03
|
||||
004227 1 A9 02 LDA #$02
|
||||
004229 1 8D 10 02 STA $0210
|
||||
00422C 1 4C C0 45 JMP theend
|
||||
00422F 1
|
||||
00422F 1
|
||||
00422F 1 ; expected result: $01DD = 0x6E
|
||||
00422F 1 test03:
|
||||
00422F 1 A9 4B LDA #$4B
|
||||
004231 1 4A LSR
|
||||
004232 1 0A ASL
|
||||
004233 1
|
||||
004233 1 85 50 STA $50
|
||||
004235 1 06 50 ASL $50
|
||||
004237 1 06 50 ASL $50
|
||||
004239 1 46 50 LSR $50
|
||||
00423B 1 A5 50 LDA $50
|
||||
00423D 1
|
||||
00423D 1 A6 50 LDX $50
|
||||
00423F 1 09 C9 ORA #$C9
|
||||
004241 1 85 60 STA $60
|
||||
004243 1 16 4C ASL $4C,X
|
||||
004245 1 56 4C LSR $4C,X
|
||||
004247 1 56 4C LSR $4C,X
|
||||
004249 1 B5 4C LDA $4C,X
|
||||
00424B 1
|
||||
00424B 1 A6 60 LDX $60
|
||||
00424D 1 09 41 ORA #$41
|
||||
00424F 1 8D 2E 01 STA $012E
|
||||
004252 1 5E 00 01 LSR $0100,X
|
||||
004255 1 5E 00 01 LSR $0100,X
|
||||
004258 1 1E 00 01 ASL $0100,X
|
||||
00425B 1 BD 00 01 LDA $0100,X
|
||||
00425E 1
|
||||
00425E 1 AE 2E 01 LDX $012E
|
||||
004261 1 09 81 ORA #$81
|
||||
004263 1 9D 00 01 STA $0100,X
|
||||
004266 1 4E 36 01 LSR $0136
|
||||
004269 1 4E 36 01 LSR $0136
|
||||
00426C 1 0E 36 01 ASL $0136
|
||||
00426F 1 BD 00 01 LDA $0100,X
|
||||
004272 1
|
||||
004272 1 ; rol & ror
|
||||
004272 1
|
||||
004272 1 2A ROL
|
||||
004273 1 2A ROL
|
||||
004274 1 6A ROR
|
||||
004275 1 85 70 STA $70
|
||||
004277 1
|
||||
004277 1 A6 70 LDX $70
|
||||
004279 1 09 03 ORA #$03
|
||||
00427B 1 95 0C STA $0C,X
|
||||
00427D 1 26 C0 ROL $C0
|
||||
00427F 1 66 C0 ROR $C0
|
||||
004281 1 66 C0 ROR $C0
|
||||
004283 1 B5 0C LDA $0C,X
|
||||
004285 1
|
||||
004285 1 A6 C0 LDX $C0
|
||||
004287 1 85 D0 STA $D0
|
||||
004289 1 36 75 ROL $75,X
|
||||
00428B 1 36 75 ROL $75,X
|
||||
00428D 1 76 75 ROR $75,X
|
||||
00428F 1 A5 D0 LDA $D0
|
||||
004291 1
|
||||
004291 1 A6 D0 LDX $D0
|
||||
004293 1 9D 00 01 STA $0100,X
|
||||
004296 1 2E B7 01 ROL $01B7
|
||||
004299 1 2E B7 01 ROL $01B7
|
||||
00429C 1 2E B7 01 ROL $01B7
|
||||
00429F 1 6E B7 01 ROR $01B7
|
||||
0042A2 1 BD 00 01 LDA $0100,X
|
||||
0042A5 1
|
||||
0042A5 1 AE B7 01 LDX $01B7
|
||||
0042A8 1 8D DD 01 STA $01DD
|
||||
0042AB 1 3E 00 01 ROL $0100,X
|
||||
0042AE 1 7E 00 01 ROR $0100,X
|
||||
0042B1 1 7E 00 01 ROR $0100,X
|
||||
0042B4 1
|
||||
0042B4 1 ; CHECK test03
|
||||
0042B4 1 AD DD 01 LDA $01DD
|
||||
0042B7 1 CD 03 02 CMP $0203
|
||||
0042BA 1 F0 08 BEQ test04
|
||||
0042BC 1 A9 03 LDA #$03
|
||||
0042BE 1 8D 10 02 STA $0210
|
||||
0042C1 1 4C C0 45 JMP theend
|
||||
0042C4 1
|
||||
0042C4 1
|
||||
0042C4 1 ; expected result: $40 = 0x42
|
||||
0042C4 1 test04:
|
||||
0042C4 1 A9 E8 LDA #$E8 ;originally:#$7C
|
||||
0042C6 1 85 20 STA $20
|
||||
0042C8 1 A9 42 LDA #$42 ;originally:#$02
|
||||
0042CA 1 85 21 STA $21
|
||||
0042CC 1 A9 00 LDA #$00
|
||||
0042CE 1 09 03 ORA #$03
|
||||
0042D0 1 4C D5 42 JMP jump1
|
||||
0042D3 1 09 FF ORA #$FF ; not done
|
||||
0042D5 1 jump1:
|
||||
0042D5 1 09 30 ORA #$30
|
||||
0042D7 1 20 E1 42 JSR subr
|
||||
0042DA 1 09 42 ORA #$42
|
||||
0042DC 1 6C 20 00 JMP ($0020)
|
||||
0042DF 1 09 FF ORA #$FF ; not done
|
||||
0042E1 1 subr:
|
||||
0042E1 1 85 30 STA $30
|
||||
0042E3 1 A6 30 LDX $30
|
||||
0042E5 1 A9 00 LDA #$00
|
||||
0042E7 1 60 RTS
|
||||
0042E8 1 final:
|
||||
0042E8 1 95 0D STA $0D,X
|
||||
0042EA 1
|
||||
0042EA 1 ; CHECK test04
|
||||
0042EA 1 A5 40 LDA $40
|
||||
0042EC 1 CD 04 02 CMP $0204
|
||||
0042EF 1 F0 08 BEQ test05
|
||||
0042F1 1 A9 04 LDA #$04
|
||||
0042F3 1 8D 10 02 STA $0210
|
||||
0042F6 1 4C C0 45 JMP theend
|
||||
0042F9 1
|
||||
0042F9 1
|
||||
0042F9 1 ; expected result: $40 = 0x33
|
||||
0042F9 1 test05:
|
||||
0042F9 1 A9 35 LDA #$35
|
||||
0042FB 1
|
||||
0042FB 1 AA TAX
|
||||
0042FC 1 CA DEX
|
||||
0042FD 1 CA DEX
|
||||
0042FE 1 E8 INX
|
||||
0042FF 1 8A TXA
|
||||
004300 1
|
||||
004300 1 A8 TAY
|
||||
004301 1 88 DEY
|
||||
004302 1 88 DEY
|
||||
004303 1 C8 INY
|
||||
004304 1 98 TYA
|
||||
004305 1
|
||||
004305 1 AA TAX
|
||||
004306 1 A9 20 LDA #$20
|
||||
004308 1 9A TXS
|
||||
004309 1 A2 10 LDX #$10
|
||||
00430B 1 BA TSX
|
||||
00430C 1 8A TXA
|
||||
00430D 1
|
||||
00430D 1 85 40 STA $40
|
||||
00430F 1
|
||||
00430F 1 ; CHECK test05
|
||||
00430F 1 A5 40 LDA $40
|
||||
004311 1 CD 05 02 CMP $0205
|
||||
004314 1 F0 08 BEQ test06
|
||||
004316 1 A9 05 LDA #$05
|
||||
004318 1 8D 10 02 STA $0210
|
||||
00431B 1 4C C0 45 JMP theend
|
||||
00431E 1
|
||||
00431E 1
|
||||
00431E 1 ; expected result: $30 = 9D
|
||||
00431E 1 test06:
|
||||
00431E 1
|
||||
00431E 1 ; RESET TO CARRY FLAG = 0
|
||||
00431E 1 2A ROL
|
||||
00431F 1
|
||||
00431F 1 A9 6A LDA #$6A
|
||||
004321 1 85 50 STA $50
|
||||
004323 1 A9 6B LDA #$6B
|
||||
004325 1 85 51 STA $51
|
||||
004327 1 A9 A1 LDA #$A1
|
||||
004329 1 85 60 STA $60
|
||||
00432B 1 A9 A2 LDA #$A2
|
||||
00432D 1 85 61 STA $61
|
||||
00432F 1
|
||||
00432F 1 A9 FF LDA #$FF
|
||||
004331 1 69 FF ADC #$FF
|
||||
004333 1 69 FF ADC #$FF
|
||||
004335 1 E9 AE SBC #$AE
|
||||
004337 1
|
||||
004337 1 85 40 STA $40
|
||||
004339 1 A6 40 LDX $40
|
||||
00433B 1 75 00 ADC $00,X
|
||||
00433D 1 F5 01 SBC $01,X
|
||||
00433F 1
|
||||
00433F 1 65 60 ADC $60
|
||||
004341 1 E5 61 SBC $61
|
||||
004343 1
|
||||
004343 1 8D 20 01 STA $0120
|
||||
004346 1 A9 4D LDA #$4D
|
||||
004348 1 8D 21 01 STA $0121
|
||||
00434B 1 A9 23 LDA #$23
|
||||
00434D 1 6D 20 01 ADC $0120
|
||||
004350 1 ED 21 01 SBC $0121
|
||||
004353 1
|
||||
004353 1 85 F0 STA $F0
|
||||
004355 1 A6 F0 LDX $F0
|
||||
004357 1 A9 64 LDA #$64
|
||||
004359 1 8D 24 01 STA $0124
|
||||
00435C 1 A9 62 LDA #$62
|
||||
00435E 1 8D 25 01 STA $0125
|
||||
004361 1 A9 26 LDA #$26
|
||||
004363 1 7D 00 01 ADC $0100,X
|
||||
004366 1 FD 01 01 SBC $0101,X
|
||||
004369 1
|
||||
004369 1 85 F1 STA $F1
|
||||
00436B 1 A4 F1 LDY $F1
|
||||
00436D 1 A9 E5 LDA #$E5
|
||||
00436F 1 8D 28 01 STA $0128
|
||||
004372 1 A9 E9 LDA #$E9
|
||||
004374 1 8D 29 01 STA $0129
|
||||
004377 1 A9 34 LDA #$34
|
||||
004379 1 79 00 01 ADC $0100,Y
|
||||
00437C 1 F9 01 01 SBC $0101,Y
|
||||
00437F 1
|
||||
00437F 1 85 F2 STA $F2
|
||||
004381 1 A6 F2 LDX $F2
|
||||
004383 1 A9 20 LDA #$20
|
||||
004385 1 85 70 STA $70
|
||||
004387 1 A9 01 LDA #$01
|
||||
004389 1 85 71 STA $71
|
||||
00438B 1 A9 24 LDA #$24
|
||||
00438D 1 85 72 STA $72
|
||||
00438F 1 A9 01 LDA #$01
|
||||
004391 1 85 73 STA $73
|
||||
004393 1 61 41 ADC ($41,X)
|
||||
004395 1 E1 3F SBC ($3F,X)
|
||||
004397 1
|
||||
004397 1 85 F3 STA $F3
|
||||
004399 1 A4 F3 LDY $F3
|
||||
00439B 1 A9 DA LDA #$DA
|
||||
00439D 1 85 80 STA $80
|
||||
00439F 1 A9 00 LDA #$00
|
||||
0043A1 1 85 81 STA $81
|
||||
0043A3 1 A9 DC LDA #$DC
|
||||
0043A5 1 85 82 STA $82
|
||||
0043A7 1 A9 00 LDA #$00
|
||||
0043A9 1 85 83 STA $83
|
||||
0043AB 1 A9 AA LDA #$AA
|
||||
0043AD 1 71 80 ADC ($80),Y
|
||||
0043AF 1 F1 82 SBC ($82),Y
|
||||
0043B1 1 85 30 STA $30
|
||||
0043B3 1
|
||||
0043B3 1 ; CHECK test06
|
||||
0043B3 1 A5 30 LDA $30
|
||||
0043B5 1 CD 06 02 CMP $0206
|
||||
0043B8 1 F0 08 BEQ test07
|
||||
0043BA 1 A9 06 LDA #$06
|
||||
0043BC 1 8D 10 02 STA $0210
|
||||
0043BF 1 4C C0 45 JMP theend
|
||||
0043C2 1
|
||||
0043C2 1
|
||||
0043C2 1 ; expected result: $15 = 0x7F
|
||||
0043C2 1 test07:
|
||||
0043C2 1 ; prepare memory
|
||||
0043C2 1 A9 00 LDA #$00
|
||||
0043C4 1 85 34 STA $34
|
||||
0043C6 1 A9 FF LDA #$FF
|
||||
0043C8 1 8D 30 01 STA $0130
|
||||
0043CB 1 A9 99 LDA #$99
|
||||
0043CD 1 8D 9D 01 STA $019D
|
||||
0043D0 1 A9 DB LDA #$DB
|
||||
0043D2 1 8D 99 01 STA $0199
|
||||
0043D5 1 A9 2F LDA #$2F
|
||||
0043D7 1 85 32 STA $32
|
||||
0043D9 1 A9 32 LDA #$32
|
||||
0043DB 1 85 4F STA $4F
|
||||
0043DD 1 A9 30 LDA #$30
|
||||
0043DF 1 85 33 STA $33
|
||||
0043E1 1 A9 70 LDA #$70
|
||||
0043E3 1 85 AF STA $AF
|
||||
0043E5 1 A9 18 LDA #$18
|
||||
0043E7 1 85 30 STA $30
|
||||
0043E9 1
|
||||
0043E9 1 ; imm
|
||||
0043E9 1 C9 18 CMP #$18
|
||||
0043EB 1 F0 02 BEQ beq1 ; taken
|
||||
0043ED 1 29 00 AND #$00 ; not done
|
||||
0043EF 1 beq1:
|
||||
0043EF 1 ; zpg
|
||||
0043EF 1 09 01 ORA #$01
|
||||
0043F1 1 C5 30 CMP $30
|
||||
0043F3 1 D0 02 BNE bne1 ; taken
|
||||
0043F5 1 29 00 AND #$00 ; not done
|
||||
0043F7 1 bne1:
|
||||
0043F7 1 ; abs
|
||||
0043F7 1 A2 00 LDX #$00
|
||||
0043F9 1 CD 30 01 CMP $0130
|
||||
0043FC 1 F0 04 BEQ beq2 ; not taken
|
||||
0043FE 1 85 40 STA $40
|
||||
004400 1 A6 40 LDX $40
|
||||
004402 1 beq2:
|
||||
004402 1 ; zpx
|
||||
004402 1 D5 27 CMP $27,X
|
||||
004404 1 D0 06 BNE bne2 ; not taken
|
||||
004406 1 09 84 ORA #$84
|
||||
004408 1 85 41 STA $41
|
||||
00440A 1 A6 41 LDX $41
|
||||
00440C 1 bne2:
|
||||
00440C 1 ; abx
|
||||
00440C 1 29 DB AND #$DB
|
||||
00440E 1 DD 00 01 CMP $0100,X
|
||||
004411 1 F0 02 BEQ beq3 ; taken
|
||||
004413 1 29 00 AND #$00 ; not done
|
||||
004415 1 beq3:
|
||||
004415 1 ; aby
|
||||
004415 1 85 42 STA $42
|
||||
004417 1 A4 42 LDY $42
|
||||
004419 1 29 00 AND #$00
|
||||
00441B 1 D9 00 01 CMP $0100,Y
|
||||
00441E 1 D0 02 BNE bne3 ; taken
|
||||
004420 1 09 0F ORA #$0F ; not done
|
||||
004422 1 bne3:
|
||||
004422 1 ; idx
|
||||
004422 1 85 43 STA $43
|
||||
004424 1 A6 43 LDX $43
|
||||
004426 1 09 24 ORA #$24
|
||||
004428 1 C1 40 CMP ($40,X)
|
||||
00442A 1 F0 02 BEQ beq4 ; not taken
|
||||
00442C 1 09 7F ORA #$7F
|
||||
00442E 1 beq4:
|
||||
00442E 1 ; idy
|
||||
00442E 1 85 44 STA $44
|
||||
004430 1 A4 44 LDY $44
|
||||
004432 1 49 0F EOR #$0F
|
||||
004434 1 D1 33 CMP ($33),Y
|
||||
004436 1 D0 04 BNE bne4 ; not taken
|
||||
004438 1 A5 44 LDA $44
|
||||
00443A 1 85 15 STA $15
|
||||
00443C 1 bne4:
|
||||
00443C 1
|
||||
00443C 1 ; CHECK test07
|
||||
00443C 1 A5 15 LDA $15
|
||||
00443E 1 CD 07 02 CMP $0207
|
||||
004441 1 F0 08 BEQ test08
|
||||
004443 1 A9 07 LDA #$07
|
||||
004445 1 8D 10 02 STA $0210
|
||||
004448 1 4C C0 45 JMP theend
|
||||
00444B 1
|
||||
00444B 1
|
||||
00444B 1 ; expected result: $42 = 0xA5
|
||||
00444B 1 test08:
|
||||
00444B 1 ; prepare memory
|
||||
00444B 1 A9 A5 LDA #$A5
|
||||
00444D 1 85 20 STA $20
|
||||
00444F 1 8D 20 01 STA $0120
|
||||
004452 1 A9 5A LDA #$5A
|
||||
004454 1 85 21 STA $21
|
||||
004456 1
|
||||
004456 1 ; cpx imm...
|
||||
004456 1 A2 A5 LDX #$A5
|
||||
004458 1 E0 A5 CPX #$A5
|
||||
00445A 1 F0 02 BEQ b1 ; taken
|
||||
00445C 1 A2 01 LDX #$01 ; not done
|
||||
00445E 1 b1:
|
||||
00445E 1 ; cpx zpg...
|
||||
00445E 1 E4 20 CPX $20
|
||||
004460 1 F0 02 BEQ b2 ; taken
|
||||
004462 1 A2 02 LDX #$02 ; not done
|
||||
004464 1 b2:
|
||||
004464 1 ; cpx abs...
|
||||
004464 1 EC 20 01 CPX $0120
|
||||
004467 1 F0 02 BEQ b3 ; taken
|
||||
004469 1 A2 03 LDX #$03 ; not done
|
||||
00446B 1 b3:
|
||||
00446B 1 ; cpy imm...
|
||||
00446B 1 86 30 STX $30
|
||||
00446D 1 A4 30 LDY $30
|
||||
00446F 1 C0 A5 CPY #$A5
|
||||
004471 1 F0 02 BEQ b4 ; taken
|
||||
004473 1 A0 04 LDY #$04 ; not done
|
||||
004475 1 b4:
|
||||
004475 1 ; cpy zpg...
|
||||
004475 1 C4 20 CPY $20
|
||||
004477 1 F0 02 BEQ b5 ; taken
|
||||
004479 1 A0 05 LDY #$05 ; not done
|
||||
00447B 1 b5:
|
||||
00447B 1 ; cpy abs...
|
||||
00447B 1 CC 20 01 CPY $0120
|
||||
00447E 1 F0 02 BEQ b6 ; taken
|
||||
004480 1 A0 06 LDY #$06 ; not done
|
||||
004482 1 b6:
|
||||
004482 1 ; bit zpg...
|
||||
004482 1 84 31 STY $31
|
||||
004484 1 A5 31 LDA $31
|
||||
004486 1 24 20 BIT $20
|
||||
004488 1 D0 02 BNE b7 ; taken
|
||||
00448A 1 A9 07 LDA #$07 ; not done
|
||||
00448C 1 b7:
|
||||
00448C 1 ; bit abs...
|
||||
00448C 1 2C 20 01 BIT $0120
|
||||
00448F 1 D0 02 BNE b8 ; taken
|
||||
004491 1 A9 08 LDA #$08 ; not done
|
||||
004493 1 b8:
|
||||
004493 1 24 21 BIT $21
|
||||
004495 1 D0 02 BNE b9 ; not taken
|
||||
004497 1 85 42 STA $42
|
||||
004499 1 b9:
|
||||
004499 1
|
||||
004499 1 ; CHECK test08
|
||||
004499 1 A5 42 LDA $42
|
||||
00449B 1 CD 08 02 CMP $0208
|
||||
00449E 1 F0 08 BEQ test09
|
||||
0044A0 1 A9 08 LDA #$08
|
||||
0044A2 1 8D 10 02 STA $0210
|
||||
0044A5 1 4C C0 45 JMP theend
|
||||
0044A8 1
|
||||
0044A8 1
|
||||
0044A8 1 ; expected result: $80 = 0x1F
|
||||
0044A8 1 test09:
|
||||
0044A8 1 ; prepare memory
|
||||
0044A8 1 A9 54 LDA #$54
|
||||
0044AA 1 85 32 STA $32
|
||||
0044AC 1 A9 B3 LDA #$B3
|
||||
0044AE 1 85 A1 STA $A1
|
||||
0044B0 1 A9 87 LDA #$87
|
||||
0044B2 1 85 43 STA $43
|
||||
0044B4 1
|
||||
0044B4 1 ; BPL
|
||||
0044B4 1 A2 A1 LDX #$A1
|
||||
0044B6 1 10 02 BPL bpl1 ; not taken
|
||||
0044B8 1 A2 32 LDX #$32
|
||||
0044BA 1 bpl1:
|
||||
0044BA 1 B4 00 LDY $00,X
|
||||
0044BC 1 10 04 BPL bpl2 ; taken
|
||||
0044BE 1 A9 05 LDA #$05 ; not done
|
||||
0044C0 1 A6 A1 LDX $A1 ; not done
|
||||
0044C2 1 bpl2:
|
||||
0044C2 1
|
||||
0044C2 1 ; BMI
|
||||
0044C2 1 30 02 BMI bmi1 ; not taken
|
||||
0044C4 1 E9 03 SBC #$03
|
||||
0044C6 1 bmi1:
|
||||
0044C6 1 30 02 BMI bmi2 ; taken
|
||||
0044C8 1 A9 41 LDA #$41 ; not done
|
||||
0044CA 1 bmi2:
|
||||
0044CA 1
|
||||
0044CA 1 ; BVC
|
||||
0044CA 1 49 30 EOR #$30
|
||||
0044CC 1 85 32 STA $32
|
||||
0044CE 1 75 00 ADC $00,X
|
||||
0044D0 1 50 02 BVC bvc1 ; not taken
|
||||
0044D2 1 A9 03 LDA #$03
|
||||
0044D4 1 bvc1:
|
||||
0044D4 1 85 54 STA $54
|
||||
0044D6 1 B6 00 LDX $00,Y
|
||||
0044D8 1 75 51 ADC $51,X
|
||||
0044DA 1 50 02 BVC bvc2 ; taken
|
||||
0044DC 1 A9 E5 LDA #$E5 ; not done
|
||||
0044DE 1 bvc2:
|
||||
0044DE 1
|
||||
0044DE 1 ; BVS
|
||||
0044DE 1 75 40 ADC $40,X
|
||||
0044E0 1 70 05 BVS bvs1 ; not taken
|
||||
0044E2 1 99 01 00 STA $0001,Y
|
||||
0044E5 1 65 55 ADC $55
|
||||
0044E7 1 bvs1:
|
||||
0044E7 1 70 02 BVS bvs2 ; taken
|
||||
0044E9 1 A9 00 LDA #$00
|
||||
0044EB 1 bvs2:
|
||||
0044EB 1
|
||||
0044EB 1 ; BCC
|
||||
0044EB 1 69 F0 ADC #$F0
|
||||
0044ED 1 90 04 BCC bcc1 ; not taken
|
||||
0044EF 1 85 60 STA $60
|
||||
0044F1 1 65 43 ADC $43
|
||||
0044F3 1 bcc1:
|
||||
0044F3 1 90 02 BCC bcc2 ; taken
|
||||
0044F5 1 A9 FF LDA #$FF
|
||||
0044F7 1 bcc2:
|
||||
0044F7 1
|
||||
0044F7 1 ; BCS
|
||||
0044F7 1 65 54 ADC $54
|
||||
0044F9 1 B0 04 BCS bcs1 ; not taken
|
||||
0044FB 1 69 87 ADC #$87
|
||||
0044FD 1 A6 60 LDX $60
|
||||
0044FF 1 bcs1:
|
||||
0044FF 1 B0 02 BCS bcs2 ; taken
|
||||
004501 1 A9 00 LDA #$00 ; not done
|
||||
004503 1 bcs2:
|
||||
004503 1 95 73 STA $73,X
|
||||
004505 1
|
||||
004505 1 ; CHECK test09
|
||||
004505 1 A5 80 LDA $80
|
||||
004507 1 CD 09 02 CMP $0209
|
||||
00450A 1 F0 08 BEQ test10
|
||||
00450C 1 A9 09 LDA #$09
|
||||
00450E 1 8D 10 02 STA $0210
|
||||
004511 1 4C C0 45 JMP theend
|
||||
004514 1
|
||||
004514 1
|
||||
004514 1 ; expected result: $30 = 0xCE
|
||||
004514 1 test10:
|
||||
004514 1
|
||||
004514 1 ; RESET TO CARRY = 0 & OVERFLOW = 0
|
||||
004514 1 69 00 ADC #$00
|
||||
004516 1
|
||||
004516 1 A9 99 LDA #$99
|
||||
004518 1 69 87 ADC #$87
|
||||
00451A 1 18 CLC
|
||||
00451B 1 EA NOP
|
||||
00451C 1 90 04 BCC t10bcc1 ; taken
|
||||
00451E 1 69 60 ADC #$60 ; not done
|
||||
004520 1 69 93 ADC #$93 ; not done
|
||||
004522 1 t10bcc1:
|
||||
004522 1 38 SEC
|
||||
004523 1 EA NOP
|
||||
004524 1 90 01 BCC t10bcc2 ; not taken
|
||||
004526 1 B8 CLV
|
||||
004527 1 t10bcc2:
|
||||
004527 1 50 02 BVC t10bvc1 ; taken
|
||||
004529 1 A9 00 LDA #$00 ; not done
|
||||
00452B 1 t10bvc1:
|
||||
00452B 1 69 AD ADC #$AD
|
||||
00452D 1 EA NOP
|
||||
00452E 1 85 30 STA $30
|
||||
004530 1
|
||||
004530 1 ; CHECK test10
|
||||
004530 1 A5 30 LDA $30
|
||||
004532 1 CD 0A 02 CMP $020A
|
||||
004535 1 F0 08 BEQ test11
|
||||
004537 1 A9 0A LDA #$0A
|
||||
004539 1 8D 10 02 STA $0210
|
||||
00453C 1 4C C0 45 JMP theend
|
||||
00453F 1
|
||||
00453F 1
|
||||
00453F 1 ; expected result: $30 = 0x29
|
||||
00453F 1 test11:
|
||||
00453F 1
|
||||
00453F 1 ; RESET TO CARRY = 0 & ZERO = 0
|
||||
00453F 1 69 01 ADC #$01
|
||||
004541 1
|
||||
004541 1 A9 27 LDA #$27
|
||||
004543 1 69 01 ADC #$01
|
||||
004545 1 38 SEC
|
||||
004546 1 08 PHP
|
||||
004547 1 18 CLC
|
||||
004548 1 28 PLP
|
||||
004549 1 69 00 ADC #$00
|
||||
00454B 1 48 PHA
|
||||
00454C 1 A9 00 LDA #$00
|
||||
00454E 1 68 PLA
|
||||
00454F 1 85 30 STA $30
|
||||
004551 1
|
||||
004551 1 ; CHECK test11
|
||||
004551 1 A5 30 LDA $30
|
||||
004553 1 CD 0B 02 CMP $020B
|
||||
004556 1 F0 08 BEQ test12
|
||||
004558 1 A9 0B LDA #$0B
|
||||
00455A 1 8D 10 02 STA $0210
|
||||
00455D 1 4C C0 45 JMP theend
|
||||
004560 1
|
||||
004560 1
|
||||
004560 1 ; expected result: $33 = 0x42
|
||||
004560 1 test12:
|
||||
004560 1 18 CLC
|
||||
004561 1 A9 42 LDA #$42
|
||||
004563 1 90 04 BCC runstuff
|
||||
004565 1 85 33 STA $33
|
||||
004567 1 B0 0A BCS t12end
|
||||
004569 1 runstuff:
|
||||
004569 1 A9 45 LDA #$45
|
||||
00456B 1 48 PHA
|
||||
00456C 1 A9 61 LDA #$61
|
||||
00456E 1 48 PHA
|
||||
00456F 1 38 SEC
|
||||
004570 1 08 PHP
|
||||
004571 1 18 CLC
|
||||
004572 1 40 RTI
|
||||
004573 1 t12end:
|
||||
004573 1
|
||||
004573 1 ; CHECK test12
|
||||
004573 1 A5 33 LDA $33
|
||||
004575 1 CD 0C 02 CMP $020C
|
||||
004578 1 F0 08 BEQ test13
|
||||
00457A 1 A9 0C LDA #$0C
|
||||
00457C 1 8D 10 02 STA $0210
|
||||
00457F 1 4C C0 45 JMP theend
|
||||
004582 1
|
||||
004582 1
|
||||
004582 1 ; expected result: $21 = 0x6C (simulator)
|
||||
004582 1 ; $21 = 0x0C (ours)
|
||||
004582 1 test13:
|
||||
004582 1
|
||||
004582 1 ; RESET TO CARRY = 0 & ZERO = 0
|
||||
004582 1 69 01 ADC #$01
|
||||
004584 1
|
||||
004584 1 78 SEI
|
||||
004585 1 F8 SED
|
||||
004586 1 08 PHP
|
||||
004587 1 68 PLA
|
||||
004588 1 85 20 STA $20
|
||||
00458A 1 58 CLI
|
||||
00458B 1 D8 CLD
|
||||
00458C 1 08 PHP
|
||||
00458D 1 68 PLA
|
||||
00458E 1 65 20 ADC $20
|
||||
004590 1 85 21 STA $21
|
||||
004592 1
|
||||
004592 1 ; CHECK test13
|
||||
004592 1 A5 21 LDA $21
|
||||
004594 1 CD 0D 02 CMP $020D
|
||||
004597 1 F0 08 BEQ test14
|
||||
004599 1 A9 0D LDA #$0D
|
||||
00459B 1 8D 10 02 STA $0210
|
||||
00459E 1 4C C0 45 JMP theend
|
||||
0045A1 1
|
||||
0045A1 1
|
||||
0045A1 1 ; expect result: $60 = 0x42
|
||||
0045A1 1 test14:
|
||||
0045A1 1 ; !!! NOTICE: BRK doesn't work in this
|
||||
0045A1 1 ; simulator, so commented instructions
|
||||
0045A1 1 ; are what should be executed...
|
||||
0045A1 1 ;JMP pass_intrp
|
||||
0045A1 1 A9 41 LDA #$41
|
||||
0045A3 1 85 60 STA $60
|
||||
0045A5 1 ;RTI
|
||||
0045A5 1 ;pass_intrp:
|
||||
0045A5 1 ;LDA #$FF
|
||||
0045A5 1 ;STA $60
|
||||
0045A5 1 ;BRK (two bytes)
|
||||
0045A5 1 E6 60 INC $60
|
||||
0045A7 1
|
||||
0045A7 1 ; CHECK test14
|
||||
0045A7 1 A5 60 LDA $60
|
||||
0045A9 1 CD 0E 02 CMP $020E
|
||||
0045AC 1 F0 08 BEQ suiteafinal
|
||||
0045AE 1 A9 0E LDA #$0E
|
||||
0045B0 1 8D 10 02 STA $0210
|
||||
0045B3 1 4C C0 45 JMP theend
|
||||
0045B6 1
|
||||
0045B6 1 suiteafinal:
|
||||
0045B6 1 ; IF $0210 == 0xFE, INCREMENT
|
||||
0045B6 1 ; (checking that it didn't
|
||||
0045B6 1 ; happen to wander off and
|
||||
0045B6 1 ; not run our instructions
|
||||
0045B6 1 ; to say which tests failed...)
|
||||
0045B6 1 A9 FE LDA #$FE
|
||||
0045B8 1 CD 10 02 CMP $0210
|
||||
0045BB 1 D0 03 BNE theend
|
||||
0045BD 1 EE 10 02 INC $0210
|
||||
0045C0 1 theend:
|
||||
0045C0 1 00 BRK
|
||||
0045C1 1 00 BRK
|
||||
0045C2 1 ;JMP theend
|
||||
0045C2 1 A2 FF LDX #$FF
|
||||
0045C4 1 9A TXS
|
||||
0045C5 1 60 RTS
|
||||
0045C6 1
|
||||
0045C6 1 .segment "KERN"
|
||||
0045C6 1
|
||||
0045C6 1 .ORG $FF00
|
||||
00FF00 1
|
||||
00FF00 1 40 RTI
|
||||
00FF01 1
|
||||
00FF01 1 .segment "VECT"
|
||||
00FF01 1
|
||||
00FF01 1 .ORG $FFFA
|
||||
00FFFA 1
|
||||
00FFFA 1 00 FF 00 FF .BYTE $00,$FF,$00,$FF,$00,$FF
|
||||
00FFFE 1 00 FF
|
||||
010000 1
|
||||
010000 1 ;-------------------------- END
|
||||
010000 1
|
24
testall_cl65.cfg
Normal file
24
testall_cl65.cfg
Normal file
@ -0,0 +1,24 @@
|
||||
#
|
||||
# This is configuration file for CL65 linker to produce
|
||||
# binary image 64 kB long, which is to be loaded from
|
||||
# address $0000.
|
||||
# Code segment CODE1, 15 kB starts at $0400.
|
||||
# Code segment CODE2, 49 kB starts at $4000.
|
||||
# Kernel jump table segment KERN (250 B) starts at $FF00.
|
||||
# Vectors segment start at $FFFA.
|
||||
#
|
||||
MEMORY {
|
||||
RAM0: start = $0000, size = $400, fill = yes;
|
||||
RAM1: start = $0400, size = $3C00, fill = yes;
|
||||
RAM2: start = $4000, size = $BF00, fill = yes;
|
||||
ROM0: start = $FF00, size = $FA, fill = yes;
|
||||
ROM1: start = $FFFA, size = 6;
|
||||
}
|
||||
|
||||
SEGMENTS {
|
||||
CODE1: load = RAM1, type = rw;
|
||||
CODE2: load = RAM2, type = rw;
|
||||
KERN: load = ROM0, type = ro;
|
||||
VECT: load = ROM1, type = ro;
|
||||
}
|
||||
|
138
testbcd.dat
138
testbcd.dat
@ -1,69 +1,69 @@
|
||||
; Program disassembly from $0400 to $0600 2/9/2016
|
||||
; Test BCD mode.
|
||||
ORG
|
||||
$0400
|
||||
$A0 $01 $8C $04 $03 $A9 $00 $8D
|
||||
$07 $03 $8D $0A $03 $AD $0A $03
|
||||
$29 $0F $8D $0B $03 $AD $0A $03
|
||||
$29 $F0 $8D $0F $03 $09 $0F $8D
|
||||
$10 $03 $AD $07 $03 $29 $0F $8D
|
||||
$09 $03 $AD $07 $03 $29 $F0 $8D
|
||||
$08 $03 $20 $5E $04 $20 $47 $05
|
||||
$20 $18 $05 $D0 $1D $20 $B1 $04
|
||||
$20 $54 $05 $20 $18 $05 $D0 $12
|
||||
$EE $07 $03 $D0 $D5 $EE $0A $03
|
||||
$D0 $BB $88 $10 $B8 $A9 $00 $8D
|
||||
$04 $03 $00 $00 $00 $00 $F8 $C0
|
||||
$01 $AD $07 $03 $6D $0A $03 $8D
|
||||
$02 $03 $08 $68 $8D $03 $03 $D8
|
||||
$C0 $01 $AD $07 $03 $6D $0A $03
|
||||
$8D $05 $03 $08 $68 $8D $06 $03
|
||||
$C0 $01 $AD $09 $03 $6D $0B $03
|
||||
$C9 $0A $A2 $00 $90 $06 $E8 $69
|
||||
$05 $29 $0F $38 $0D $08 $03 $7D
|
||||
$0F $03 $08 $B0 $04 $C9 $A0 $90
|
||||
$03 $69 $5F $38 $8D $00 $03 $08
|
||||
$68 $8D $01 $03 $68 $8D $0D $03
|
||||
$60 $F8 $C0 $01 $AD $07 $03 $ED
|
||||
$0A $03 $8D $02 $03 $08 $68 $8D
|
||||
$03 $03 $D8 $C0 $01 $AD $07 $03
|
||||
$ED $0A $03 $8D $05 $03 $08 $68
|
||||
$8D $06 $03 $60 $C0 $01 $AD $09
|
||||
$03 $ED $0B $03 $A2 $00 $B0 $06
|
||||
$E8 $E9 $05 $29 $0F $18 $0D $08
|
||||
$03 $FD $0F $03 $B0 $02 $E9 $5F
|
||||
$8D $00 $03 $60 $C0 $01 $AD $09
|
||||
$03 $ED $0B $03 $A2 $00 $B0 $04
|
||||
$E8 $29 $0F $18 $0D $08 $03 $FD
|
||||
$0F $03 $B0 $02 $E9 $5F $E0 $00
|
||||
$F0 $02 $E9 $06 $8D $00 $03 $60
|
||||
$AD $02 $03 $CD $00 $03 $D0 $26
|
||||
$AD $03 $03 $4D $0C $03 $29 $80
|
||||
$D0 $1C $AD $03 $03 $4D $0D $03
|
||||
$29 $40 $D0 $12 $AD $03 $03 $4D
|
||||
$0E $03 $29 $02 $D0 $08 $AD $03
|
||||
$03 $4D $01 $03 $29 $01 $60 $AD
|
||||
$0D $03 $8D $0C $03 $AD $06 $03
|
||||
$8D $0E $03 $60 $20 $D4 $04 $AD
|
||||
$06 $03 $8D $0C $03 $8D $0D $03
|
||||
$8D $0E $03 $8D $01 $03 $60 $AD
|
||||
$00 $03 $08 $68 $8D $0C $03 $8D
|
||||
$0E $03 $60 $20 $F4 $04 $AD $00
|
||||
$03 $08 $68 $8D $0C $03 $8D $0E
|
||||
$03 $AD $06 $03 $8D $0D $03 $8D
|
||||
$01 $03 $60 $AD $00 $03 $08 $68
|
||||
$8D $0C $03 $8D $0E $03 $60 $20
|
||||
$D4 $04 $AD $00 $03 $08 $68 $8D
|
||||
$0C $03 $8D $0E $03 $AD $06 $03
|
||||
$8D $0D $03 $8D $01 $03 $60 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
|
||||
; Program disassembly from $0400 to $0600 2/9/2016
|
||||
; Test BCD mode.
|
||||
ORG
|
||||
$0400
|
||||
$A0 $01 $8C $04 $03 $A9 $00 $8D
|
||||
$07 $03 $8D $0A $03 $AD $0A $03
|
||||
$29 $0F $8D $0B $03 $AD $0A $03
|
||||
$29 $F0 $8D $0F $03 $09 $0F $8D
|
||||
$10 $03 $AD $07 $03 $29 $0F $8D
|
||||
$09 $03 $AD $07 $03 $29 $F0 $8D
|
||||
$08 $03 $20 $5E $04 $20 $47 $05
|
||||
$20 $18 $05 $D0 $1D $20 $B1 $04
|
||||
$20 $54 $05 $20 $18 $05 $D0 $12
|
||||
$EE $07 $03 $D0 $D5 $EE $0A $03
|
||||
$D0 $BB $88 $10 $B8 $A9 $00 $8D
|
||||
$04 $03 $00 $00 $00 $00 $F8 $C0
|
||||
$01 $AD $07 $03 $6D $0A $03 $8D
|
||||
$02 $03 $08 $68 $8D $03 $03 $D8
|
||||
$C0 $01 $AD $07 $03 $6D $0A $03
|
||||
$8D $05 $03 $08 $68 $8D $06 $03
|
||||
$C0 $01 $AD $09 $03 $6D $0B $03
|
||||
$C9 $0A $A2 $00 $90 $06 $E8 $69
|
||||
$05 $29 $0F $38 $0D $08 $03 $7D
|
||||
$0F $03 $08 $B0 $04 $C9 $A0 $90
|
||||
$03 $69 $5F $38 $8D $00 $03 $08
|
||||
$68 $8D $01 $03 $68 $8D $0D $03
|
||||
$60 $F8 $C0 $01 $AD $07 $03 $ED
|
||||
$0A $03 $8D $02 $03 $08 $68 $8D
|
||||
$03 $03 $D8 $C0 $01 $AD $07 $03
|
||||
$ED $0A $03 $8D $05 $03 $08 $68
|
||||
$8D $06 $03 $60 $C0 $01 $AD $09
|
||||
$03 $ED $0B $03 $A2 $00 $B0 $06
|
||||
$E8 $E9 $05 $29 $0F $18 $0D $08
|
||||
$03 $FD $0F $03 $B0 $02 $E9 $5F
|
||||
$8D $00 $03 $60 $C0 $01 $AD $09
|
||||
$03 $ED $0B $03 $A2 $00 $B0 $04
|
||||
$E8 $29 $0F $18 $0D $08 $03 $FD
|
||||
$0F $03 $B0 $02 $E9 $5F $E0 $00
|
||||
$F0 $02 $E9 $06 $8D $00 $03 $60
|
||||
$AD $02 $03 $CD $00 $03 $D0 $26
|
||||
$AD $03 $03 $4D $0C $03 $29 $80
|
||||
$D0 $1C $AD $03 $03 $4D $0D $03
|
||||
$29 $40 $D0 $12 $AD $03 $03 $4D
|
||||
$0E $03 $29 $02 $D0 $08 $AD $03
|
||||
$03 $4D $01 $03 $29 $01 $60 $AD
|
||||
$0D $03 $8D $0C $03 $AD $06 $03
|
||||
$8D $0E $03 $60 $20 $D4 $04 $AD
|
||||
$06 $03 $8D $0C $03 $8D $0D $03
|
||||
$8D $0E $03 $8D $01 $03 $60 $AD
|
||||
$00 $03 $08 $68 $8D $0C $03 $8D
|
||||
$0E $03 $60 $20 $F4 $04 $AD $00
|
||||
$03 $08 $68 $8D $0C $03 $8D $0E
|
||||
$03 $AD $06 $03 $8D $0D $03 $8D
|
||||
$01 $03 $60 $AD $00 $03 $08 $68
|
||||
$8D $0C $03 $8D $0E $03 $60 $20
|
||||
$D4 $04 $AD $00 $03 $08 $68 $8D
|
||||
$0C $03 $8D $0E $03 $AD $06 $03
|
||||
$8D $0D $03 $8D $01 $03 $60 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
$00 $00 $00 $00 $00 $00 $00 $00
|
||||
|
||||
|
1548
tinybasic.dat
1548
tinybasic.dat
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user