Hillbilly1 Assembler files
This commit is contained in:
parent
e4202be58b
commit
1f98bcfc28
|
@ -0,0 +1,54 @@
|
|||
\ RAM Variables
|
||||
ORG 0800H \RAM at 0800h
|
||||
DEF X_Lo *1
|
||||
DEF X_Hi *1
|
||||
DEF Y_Lo *1
|
||||
DEF Y_Hi *1
|
||||
DEF Z_Lo *1
|
||||
DEF Z_Hi *1
|
||||
DEF Carry_Lo *1
|
||||
DEF Carry_Hi *1
|
||||
ORG 0400h
|
||||
\
|
||||
\ load some numbers
|
||||
\
|
||||
\ Put numbers in X and Y at 0800H by hand from Control Panel.
|
||||
\
|
||||
\
|
||||
\ 16bit ADD X + Y -> Z + Carry_Hi
|
||||
\
|
||||
|
||||
\
|
||||
NOP
|
||||
ADD16:
|
||||
WAIT
|
||||
STAZ Carry_Lo \Clear lo carry
|
||||
LDAA X_Lo
|
||||
LDAB Y_Lo
|
||||
ADD \ADD lo bytes
|
||||
STAC Z_Lo \store partial sum
|
||||
BRNO ADD16J1: \test OVF bit to see if Carry required
|
||||
LDIA 01h \must be OVF, set a Carry_Lo
|
||||
STAA Carry_Lo
|
||||
ADD16J1:
|
||||
STAZ Carry_Hi \Clear hi carry
|
||||
LDAA X_Hi
|
||||
LDAB Y_Hi
|
||||
ADD \ADD hi bytes
|
||||
STAC Z_Hi \store hi partial sum
|
||||
BRNO ADD16J2:
|
||||
LDAA 01h \might be a hi carry
|
||||
STAA Carry_Hi
|
||||
ADD16J2:
|
||||
MOVC,A
|
||||
LDAB Carry_Lo \include any lo carry
|
||||
ADD
|
||||
STAC Z_Hi
|
||||
BRNO ADD16J3:
|
||||
LDAA 01h
|
||||
STAA Carry_Hi \which may trigger a hi carry
|
||||
ADD16J3:
|
||||
\
|
||||
BRA ADD16:
|
||||
\
|
||||
\ end of ADD16
|
|
@ -0,0 +1,10 @@
|
|||
0800:
|
||||
0400: 00 0C BC 08 06 A0 08 00
|
||||
0408: A1 08 02 22 94 08 04 5C
|
||||
0410: 04 17 98 01 84 08 06 BC
|
||||
0418: 08 07 A0 08 01 A1 08 03
|
||||
0420: 22 94 08 05 5C 04 2D A0
|
||||
0428: 00 01 84 08 07 D0 A1 08
|
||||
0430: 06 22 94 08 05 5C 04 3E
|
||||
0438: A0 00 01 84 08 07 60 04
|
||||
0440: 01
|
|
@ -0,0 +1,93 @@
|
|||
>>>>> Starting pass1...
|
||||
Symbol-> X_Lo 0800H (2048)
|
||||
Symbol-> X_Hi 0801H (2049)
|
||||
Symbol-> Y_Lo 0802H (2050)
|
||||
Symbol-> Y_Hi 0803H (2051)
|
||||
Symbol-> Z_Lo 0804H (2052)
|
||||
Symbol-> Z_Hi 0805H (2053)
|
||||
Symbol-> Carry_Lo 0806H (2054)
|
||||
Symbol-> Carry_Hi 0807H (2055)
|
||||
Label-> ADD16: 0401H
|
||||
Label-> ADD16J1: 0417H
|
||||
Label-> ADD16J2: 042DH
|
||||
Label-> ADD16J3: 043EH
|
||||
<<<<< end of pass1
|
||||
\ RAM Variables
|
||||
0800: ORG 0800H \RAM at 0800h
|
||||
DEF X_Lo *1
|
||||
DEF X_Hi *1
|
||||
DEF Y_Lo *1
|
||||
DEF Y_Hi *1
|
||||
DEF Z_Lo *1
|
||||
DEF Z_Hi *1
|
||||
DEF Carry_Lo *1
|
||||
DEF Carry_Hi *1
|
||||
0400: ORG 0400h
|
||||
\
|
||||
\ load some numbers
|
||||
\
|
||||
\ Put numbers in X and Y at 0800H by hand from Control Panel.
|
||||
\
|
||||
\
|
||||
\ 16bit ADD X + Y -> Z + Carry_Hi
|
||||
\
|
||||
|
||||
\
|
||||
0400: 00 NOP
|
||||
ADD16:
|
||||
0401: 0C WAIT
|
||||
0402: BC 08 06 STAZ Carry_Lo \Clear lo carry
|
||||
0405: A0 08 00 LDAA X_Lo
|
||||
0408: A1 08 02 LDAB Y_Lo
|
||||
040B: 22 ADD \ADD lo bytes
|
||||
040C: 94 08 04 STAC Z_Lo \store partial sum
|
||||
040F: 5C 04 17 BRNO ADD16J1: \test OVF bit to see if Carry required
|
||||
0412: 98 01 LDIA 01h \must be OVF, set a Carry_Lo
|
||||
0414: 84 08 06 STAA Carry_Lo
|
||||
ADD16J1:
|
||||
0417: BC 08 07 STAZ Carry_Hi \Clear hi carry
|
||||
041A: A0 08 01 LDAA X_Hi
|
||||
041D: A1 08 03 LDAB Y_Hi
|
||||
0420: 22 ADD \ADD hi bytes
|
||||
0421: 94 08 05 STAC Z_Hi \store hi partial sum
|
||||
0424: 5C 04 2D BRNO ADD16J2:
|
||||
0427: A0 00 01 LDAA 01h \might be a hi carry
|
||||
042A: 84 08 07 STAA Carry_Hi
|
||||
ADD16J2:
|
||||
042D: D0 MOVC,A
|
||||
042E: A1 08 06 LDAB Carry_Lo \include any lo carry
|
||||
0431: 22 ADD
|
||||
0432: 94 08 05 STAC Z_Hi
|
||||
0435: 5C 04 3E BRNO ADD16J3:
|
||||
0438: A0 00 01 LDAA 01h
|
||||
043B: 84 08 07 STAA Carry_Hi \which may trigger a hi carry
|
||||
ADD16J3:
|
||||
\
|
||||
043E: 60 04 01 BRA ADD16:
|
||||
\
|
||||
\ end of ADD16
|
||||
|
||||
|
||||
Labels
|
||||
======
|
||||
0401: ADD16:
|
||||
0417: ADD16J1:
|
||||
042D: ADD16J2:
|
||||
043E: ADD16J3:
|
||||
|
||||
Symbols
|
||||
======
|
||||
X_Lo: 0800
|
||||
X_Hi: 0801
|
||||
Y_Lo: 0802
|
||||
Y_Hi: 0803
|
||||
Z_Lo: 0804
|
||||
Z_Hi: 0805
|
||||
Carry_Lo: 0806
|
||||
Carry_Hi: 0807
|
||||
|
||||
|
||||
Constants
|
||||
=========
|
||||
|
||||
0:Errors
|
|
@ -0,0 +1,175 @@
|
|||
|
||||
|
||||
C:\>asm43 --help
|
||||
Relay Computer Assembler: Ver. Beta 0.4.3
|
||||
|
||||
Valid assembler codes:
|
||||
|
||||
ADD : 22 00100010
|
||||
AND : 26 00100110
|
||||
BRA : 60 01100000
|
||||
BRN : 48 01001000
|
||||
BRNN : 54 01010100
|
||||
BRNO : 5c 01011100
|
||||
BRNP : 50 01010000
|
||||
BRNZ : 4c 01001100
|
||||
BRO : 58 01011000
|
||||
BRP : 44 01000100
|
||||
BRZ : 40 01000000
|
||||
DEF :
|
||||
EQU :
|
||||
HALT : 08 00001000
|
||||
INCB,A : 2c 00101100
|
||||
INCB,C : 2e 00101110
|
||||
LDAA : a0 10100000
|
||||
LDAB : a1 10100001
|
||||
LDAC : a2 10100010
|
||||
LDDA : a8 10101000
|
||||
LDDB : a9 10101001
|
||||
LDDC : aa 10101010
|
||||
LDIA : 98 10011000
|
||||
LDIB : 99 10011001
|
||||
LDIC : 9a 10011010
|
||||
MOVA,B : c1 11000001
|
||||
MOVA,C : c2 11000010
|
||||
MOVA,MH : c3 11000011
|
||||
MOVA,ML : c4 11000100
|
||||
MOVAD+,PC: ec 11101100
|
||||
MOVB,A : c8 11001000
|
||||
MOVB,C : ca 11001010
|
||||
MOVB,MH : cb 11001011
|
||||
MOVB,ML : cc 11001100
|
||||
MOVC,A : d0 11010000
|
||||
MOVC,B : d1 11010001
|
||||
MOVC,MH : d3 11010011
|
||||
MOVC,ML : d4 11010100
|
||||
MOVM,PC : de 11011110
|
||||
MOVPC,AD+: f5 11110101
|
||||
MOVZ,A : f8 11111000
|
||||
MOVZ,B : f9 11111001
|
||||
MOVZ,C : fa 11111010
|
||||
MOVZ,MH : fb 11111011
|
||||
MOVZ,ML : fc 11111100
|
||||
NOP : 00 00000000
|
||||
NOTA,B : 29 00101001
|
||||
NOTA,C : 2a 00101010
|
||||
ORG :
|
||||
RESET : 04 00000100
|
||||
ROLB,A : 34 00110100
|
||||
ROLB,C : 36 00110110
|
||||
RORA,B : 31 00110001
|
||||
RORA,C : 32 00110010
|
||||
STAA : 84 10000100
|
||||
STAB : 8c 10001100
|
||||
STAC : 94 10010100
|
||||
STAZ : bc 10111100
|
||||
STDA : 85 10000101
|
||||
STDB : 8d 10001101
|
||||
STDC : 95 10010101
|
||||
WAIT : 0c 00001100
|
||||
\ :
|
||||
|
||||
|
||||
Example assembly
|
||||
|
||||
|
||||
>>>>> Starting pass1...
|
||||
Constant-> START 05H (5)
|
||||
Constant-> LENG 0AH (10)
|
||||
Constant-> END 0FH (15)
|
||||
Symbol-> STACK 4000H (16384)
|
||||
Symbol-> stkPtr 400AH (16394)
|
||||
Label-> L1: 0040H
|
||||
Label-> RET1: 0062H
|
||||
<<<<< end of pass1
|
||||
|
||||
\ This is a comment
|
||||
\ Define a constant
|
||||
EQU START 05H
|
||||
EQU LENG 10
|
||||
EQU END START+LENG
|
||||
|
||||
\ Define some variables in RAM
|
||||
4000: ORG 4000H \Ram at 4000H
|
||||
DEF STACK *10 \Holds 5 addresses
|
||||
DEF stkPtr *2 \Pointer into stack
|
||||
|
||||
\ Beginning of code
|
||||
\
|
||||
\ Space prefixed string
|
||||
\ Tab prefixed string
|
||||
\ Space after \ in string
|
||||
0100: org 0100H
|
||||
0100: 00 nop
|
||||
0101: 00 NOP
|
||||
0102: BC 40 0A STAZ stkPtr
|
||||
0105: BC 40 0B STAZ stkPtr+1
|
||||
0108: F8 MOVZ,A
|
||||
0109: 85 STDA
|
||||
010A: A8 LDDA
|
||||
0032: org 50 \using decimal org
|
||||
0032: 99 FF LDIB FFH
|
||||
0034: 99 08 LDIB START+3
|
||||
0036: 98 05 LDIA START
|
||||
0038: 98 40 LDIA STACK:H
|
||||
003A: 98 00 LDIA STACK:L
|
||||
003C: 98 03 LDIA STACK+3:L
|
||||
003E: 98 40 LDIA STACK+3:H
|
||||
L1:
|
||||
0040: 22 ADD
|
||||
0041: D0 MOVC,A
|
||||
0042: 4C 00 40 BRNZ L1: \ Test trailing comment
|
||||
0045: 00 nop
|
||||
0046: 00 nop
|
||||
0047: A0 00 02 LDAA 0002H \ Address in Hex
|
||||
004A: A0 00 40 LDAA L1: \ Address as a label
|
||||
004D: A1 40 0A LDAB stkPtr \ Address as a symbol
|
||||
0050: 2E INCB,C
|
||||
0051: 94 40 0A STAC stkPtr
|
||||
0054: 94 40 0D STAC stkPtr+START-2
|
||||
0057: A0 40 0B LDAA stkPtr+1
|
||||
005A: 36 ROLB,C
|
||||
005B: 98 00 LDIA RET1:H
|
||||
005D: C3 MOVA,MH
|
||||
005E: 98 62 LDIA RET1:L
|
||||
0060: C4 MOVA,ML
|
||||
0061: DE MOVM,PC
|
||||
RET1:
|
||||
0062: 08 halt
|
||||
\ End of program
|
||||
|
||||
|
||||
|
||||
Labels
|
||||
======
|
||||
0040: L1:
|
||||
0062: RET1:
|
||||
|
||||
Symbols
|
||||
=======
|
||||
STACK: 4000
|
||||
stkPtr: 400A
|
||||
|
||||
Constants
|
||||
=========
|
||||
START: 05
|
||||
LENG: 0A
|
||||
END: 0F
|
||||
|
||||
Hex output
|
||||
==========
|
||||
4000:
|
||||
0100: 00 00 BC 40 0A BC 40 0B
|
||||
0108: F8 85 A8
|
||||
0032: 99 FF 99 08 98 05 98 40
|
||||
003A: 98 00 98 03 98 40 22 D0
|
||||
0042: 4C 00 40 00 00 A0 00 02
|
||||
004A: A0 00 40 A1 40 0A 2E 94
|
||||
0052: 40 0A 94 40 0D A0 40 0B
|
||||
005A: 36 98 00 C3 98 62 C4 DE
|
||||
0062: 08
|
||||
|
||||
0:Errors
|
||||
|
||||
|
||||
C:\>
|
Loading…
Reference in New Issue