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 |
---|---|---|---|---|---|---|---|
asm | chase.asm | r1 | manage | 1.0 K | 2017-12-17 - 15:48 | PeterSchmid | |
bin | chase.bin | r1 | manage | 0.1 K | 2017-12-17 - 15:48 | PeterSchmid | |
hex | chase.hex | r1 | manage | 0.1 K | 2017-12-17 - 15:48 | PeterSchmid | |
lst | chase.lst | r1 | manage | 3.2 K | 2017-12-17 - 15:48 | PeterSchmid | |
asm | knightrider.asm | r1 | manage | 1.0 K | 2018-12-07 - 15:29 | PeterSchmid | |
bin | knightrider.bin | r1 | manage | 0.1 K | 2018-12-07 - 15:28 | PeterSchmid | |
hex | knightrider.hex | r1 | manage | 0.1 K | 2018-12-07 - 15:28 | PeterSchmid | |
lst | knightrider.lst | r1 | manage | 3.1 K | 2018-12-07 - 15:28 | PeterSchmid |