pi@cosmac:~/elf/RaspiElf/chase $ a18 chase.asm -Lb1 chase.lst -o chase.hex 1802/1805A Cross-Assembler (Portable) Ver 2.5 Copyright (c) 1985 William C. Colley, III Copyright (c) 2017 Mark W. Sherman No ErrorsThe cross assembler generates two output files: the object file (Intel hex file
chase.hex) and the listing file (chase.lst). You can load the program into the Elf Membership Card the traditional way by setting the switches. Or upload it with the RaspiElf bin2elf tool. But for this we need a binary file first. A handy tool is Jacques Pelletier's Hex2bin (see below how to get and install Hex2bin).
pi@cosmac:~/elf/RaspiElf/chase $ hex2bin chase.hex hex2bin v2.5, Copyright (C) 2017 Jacques Pelletier & contributors Allocate_Memory_and_Rewind: Lowest address: 00000000 Highest address: 0000002C Starting address: 00000000 Max Length: 45 Binary file start = 00000000 Records start = 00000000 Highest address = 0000002C Pad Byte = FFSee RaspiElf#Sample_session for how to run chase.
pi@cosmac:~/elf $ git clone https://github.com/carangil/A18.git Cloning into 'A18'... remote: Counting objects: 81, done. remote: Total 81 (delta 0), reused 0 (delta 0), pack-reused 81 Unpacking objects: 100% (81/81), done. Checking connectivity... done. pi@cosmac:~/elf $If you have not installed GIT yet, then install it with
sudo apt-get install git
Install the cross assmbler into /usr/local/bin
pi@cosmac:~/elf/A18 $ make pi@cosmac:~/elf/A18 $ sudo install -m 557 a18 /usr/local/bin pi@cosmac:~/elf/A18 $
pi@cosmac:~/elf $ tar xvjf ~/Downloads/Hex2bin-2.5.tar.bz2 Hex2bin-2.5/ Hex2bin-2.5/mot2bin.c Hex2bin-2.5/doc/ ... Hex2bin-2.5/mot2bin.layoutBuild (compile):
pi@cosmac:~/elf $ cd Hex2bin-2.5/ pi@cosmac:~/elf/Hex2bin-2.5 $ make gcc -c -std=c99 -O2 -Wall -pedantic hex2bin.c -o hex2bin.o gcc -c -std=c99 -O2 -Wall -pedantic common.c -o common.o gcc -c -std=c99 -O2 -Wall -pedantic libcrc.c -o libcrc.o gcc -c -std=c99 -O2 -Wall -pedantic binary.c -o binary.o gcc -O2 -Wall -o hex2bin hex2bin.o common.o libcrc.o binary.o gcc -c -std=c99 -O2 -Wall -pedantic mot2bin.c -o mot2bin.o gcc -O2 -Wall -o mot2bin mot2bin.o common.o libcrc.o binary.oInstall:
pi@cosmac:~/elf/Hex2bin-2.5 $ sudo make install strip hex2bin strip mot2bin cp hex2bin mot2bin /usr/local/bin cp hex2bin.1 /usr/local/man/man1 pi@cosmac:~/elf/Hex2bin-2.5 $
chase.lst)
ORG 0H
0000 c0:11000000 LBR MOVE
0001 00:00000000
0002 03:00000011
MOVE
0003 e3:11100011 SEX R3 ; index register R3 for bit pattern point to 30H
0004 90:10010000 GHI R0 ; PC high byte is 0
0005 b3:10110011 PHI R3
0006 f8:11111000 LDI 30H
0007 30:00110000
0008 a3:10100011 PLO R3
0009 f8:11111000 LDI 00000001B ; bit pattern to move in (0030H)
000a 01:00000001
000b 53:01010011 STR R3
LOOP
000c 64:01100100 OUT P4 ; Rx = 0030H, INC Rx
000d 6c:01101100 INP P4 ; get switches Rx =0031H
000e 23:00100011 DEC R3 ; Rx = 0030H
000f fa:11111010 ANI 11111110B
0010 fe:11111110
0011 3a:00111010 BNZ LEFT
0012 1a:00011010
RIGHT
0013 f0:11110000 LDX ; get pattern
0014 f6:11110110 SHR
0015 c7:11000111 LSNF
0016 f8:11111000 LDI 10000000B
0017 80:10000000
0018 30:00110000 BR STORE
0019 1f:00011111
LEFT
001a f0:11110000 LDX ; get pattern
001b fe:11111110 SHL
001c c7:11000111 LSNF
001d f8:11111000 LDI 00000001B
001e 01:00000001
STORE
001f 53:01010011 STR R3
0020 f8:11111000 LDI 20
0021 14:00010100
0022 b2:10110010 PHI R2 ; R2 wait counter
WAIT
0023 22:00100010 DEC R2 ; wait loop about 0.5 s
0024 92:10010010 GHI R2
0025 3a:00111010 BNZ WAIT
0026 23:00100011
0027 c5:11000101 LSNQ ; toggle Q
0028 7a:01111010 REQ
0029 38:00111000 NBR 7bH ; SEQ
002a 7b:01111011
;SEQ
002b 30:00110000 BR LOOP
002c 0c:00001100
END
knightrider.lst)
; TITL "Chase Lighting (Knight Rider) for Elf Memebership Card"
; EJCT 60
CPU 1802
NUMBER EQU 0
;
; Register Definitions:
;
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
;
; I/O Port Definitions:
;
P1 EQU 1
P2 EQU 2
P3 EQU 3
P4 EQU 4
P5 EQU 5
P6 EQU 6
P7 EQU 7
ORG 0H
0000 c0:11000000 LBR MOVE ; the branch can be overwritten
0001 00:00000000
0002 03:00000011
MOVE
0003 e3:11100011 SEX R3 ; index register R3 for bit pattern point to 30H
0004 90:10010000 GHI R0 ; PC high byte is 0
0005 b3:10110011 PHI R3
0006 f8:11111000 LDI 30H
0007 30:00110000
0008 a3:10100011 PLO R3
0009 f8:11111000 LDI 00000001B ; bit pattern to move in (0030H)
000a 01:00000001
000b 7b:01111011 SEQ ; shift left
LOOP
000c 53:01010011 STR R3 ; store pattern
000d 64:01100100 OUT P4 ; Rx = 0030H, INC Rx
000e f8:11111000 LDI 0FFH
000f ff:11111111
0010 a2:10100010 PLO R2
0011 6c:01101100 INP P4
0012 b2:10110010 PHI R2 ; R2 wait counter
0013 23:00100011 DEC R3
WAIT
0014 22:00100010 DEC R2 ; wait loop about 0.5 s @ 20
0015 92:10010010 GHI R2
0016 3a:00111010 BNZ WAIT
0017 14:00010100
0018 f0:11110000 LDX ; get pattern
0019 31:00110001 BQ LEFT
001a 23:00100011
RIGHT
001b f6:11110110 SHR
001c 3a:00111010 BNZ LOOP
001d 0c:00001100
001e f8:11111000 LDI 00000010B
001f 02:00000010
0020 7b:01111011 SEQ
0021 30:00110000 BR LOOP
0022 0c:00001100
LEFT
0023 fe:11111110 SHL
0024 3a:00111010 BNZ LOOP
0025 0c:00001100
0026 f8:11111000 LDI 01000000B
0027 40:01000000
0028 7a:01111010 REQ
0029 30:00110000 BR LOOP
002a 0c:00001100
END
0023 LEFT 000c LOOP 0003 MOVE 0000 NUMBER
0001 P1 0002 P2 0003 P3 0004 P4
0005 P5 0006 P6 0007 P7 0000 R0
0001 R1 000a R10 000b R11 000c R12
000d R13 000e R14 000f R15 0002 R2
0003 R3 0004 R4 0005 R5 0006 R6
0007 R7 0008 R8 0009 R9 001b RIGHT
0014 WAIT
| I | Attachment | History | Action | Size | Date | Who | Comment |
|---|---|---|---|---|---|---|---|
| |
chase.asm | r1 | manage | 1.0 K | 2017-12-17 - 15:48 | PeterSchmid | |
| |
chase.bin | r1 | manage | 0.1 K | 2017-12-17 - 15:48 | PeterSchmid | |
| |
chase.hex | r1 | manage | 0.1 K | 2017-12-17 - 15:48 | PeterSchmid | |
| |
chase.lst | r1 | manage | 3.2 K | 2017-12-17 - 15:48 | PeterSchmid | |
| |
knightrider.asm | r1 | manage | 1.0 K | 2018-12-07 - 15:29 | PeterSchmid | |
| |
knightrider.bin | r1 | manage | 0.1 K | 2018-12-07 - 15:28 | PeterSchmid | |
| |
knightrider.hex | r1 | manage | 0.1 K | 2018-12-07 - 15:28 | PeterSchmid | |
| |
knightrider.lst | r1 | manage | 3.1 K | 2018-12-07 - 15:28 | PeterSchmid |