Ich beziehe mich hier auf folgenden Beitrag: Beitrag "Alles neu macht der Mai" Präambel Im folgenden werde ich das Projekt als Objektcode bereitstellen, ungeachtet der Defizite des momentanen Bewertungssystems. Es scheint (bedauerlicherweise) so zu sein, das der Betreiber dieses Forums kein Gespür dafür hat, wie man "Beitragende" motiviert - und dies ist keine exklusive Einschätzung meinerseits!. Ganz offenbar wird auch hier den "Besonderen", (wie z.Zt. überall in der Gesellschaft) ungeachtet Ihrer teilweise schädlichen Einflüsse, zuviel Raum gegeben. Ich will es trotzdem versuchen! Worum geht es? Was ist "48as"? - Das Programm "48as" ist ein rudimentärer Assembler für den Mikroprozessor Intel 8048. - Der Syntax orientiert sich am "MCS-48(TM) FAMILY OF SINGLE CHIP MICROCOMPUTERS USER'S MANUAL". - Eine direkte Ansteuerung des "EPROM-EMU-NG" von Kris Sekula wurde implementiert. Das Projekt wird innerhalb der nächsten 1 bis 2 Wochen in diesem Faden hochgeladen, sofern dieser Beitrag nicht der "Zensur" zum Opfer fällt...
:
Bearbeitet durch User
Hier ein Beispielprogramm zum Testen:
1 | ;****************************************************** |
2 | ; |
3 | ; THIS IS AN EXAMPLE PROGRAM FOR THE 8048 PROCESSOR. |
4 | ; IT IS TAKEN FROM PAGE 335 OF THE NOVEMBER 15, 1984 |
5 | ; ISSUE OF EDN. |
6 | ; |
7 | ; DATA LOGGER SOFTWARE |
8 | ; BY: WUNNAVA V. SUBBARAO |
9 | ; FLORIDA INTERNATIONAL UNIVERSITY, MIAMI, FLORIDA |
10 | ; |
11 | INITIAL: MOV R0,#10 ;R0 & R1 LOADED WITH #10, WHICH |
12 | MOV R1,#10 ;HAS BLANK CODE LOCATION IN PAGE |
13 | START: CLR A ;THREE. |
14 | OUTL P1,A ;INPUT SHIFT REG IS IN LOAD MODE |
15 | OUTL BUS,A ;P17 & P16 AT 0. |
16 | CPL C ;CARRY COMPLEMENTED |
17 | JC DIGIT1 |
18 | DIGIT0: MOV A,#00 ;MAKE P20=0 ACTIVATING DIGIT 0 |
19 | OUTL P2,A ;IF CARRY=0 & LOAD R0 INTO A FOR |
20 | MOV A,R0 ;DISPLAY ON DIGIT 0. |
21 | JMP DISPLAY |
22 | DIGIT1: MOV A,#01 ;MAKE P20=1 ACTIVATING DIGIT 1 |
23 | OUTL P2,A ;IF CARRY=1 & LOAD R1 INTO A FOR |
24 | MOV A,R1 ;DISPLAY ON DIGIT 1. |
25 | DISPLAY: MOVP3 A,@A ;CONTENTS OF CODE TABLE ON PG 3 |
26 | OUTL BUS,A ;PUT ONTO DATA BUS. |
27 | MOV R6,#0FH |
28 | DLY1: DJNZ R6,DLY1 ;DELAY LOOP 1, SMALL DELAY. |
29 | JT1 OTOREG ;IF T1=1, JUMP TO NEXT LOAD. |
30 | MOV R6,#0FFH ;IF T1=0 PROGRAM CHECKS DEBOUNCE |
31 | DLY2: DJNZ R6,DLY2 ;IF SO, KEEP CHECKING DEBOUNCE. |
32 | JT1 OTOREG ;OTHERWISE JUMP TO NEXT LOAD. |
33 | SERDAT: MOV A,#80H ;P17 MADE 1 FOR SHIFT MODE. |
34 | OUTL P1,A |
35 | MOV R3,#04 ;SHIFT CTR R3 INITIALIZED TO 4. |
36 | MOV R4,#00 ;INITIALIZE DATA REGISTER TO 0. |
37 | NXTB: CLR C ;T0 EXAMINED & T0 CORRESPONDING |
38 | RDXIN: JNT0 SHIFTD ;DATA BIT IS SHIFTED INTO R4, IF |
39 | CPL C ;T0=0 (CARRY CLEARED);IF T0=1, |
40 | SHIFTD: MOV A,R4 ;SET CARRY=1, THEN SHIFT INTO R4 |
41 | RLC A |
42 | MOV R4,A |
43 | CLOCK: MOV A,#0C0H ;CLOCK SIGNAL GENERATED ON P16, |
44 | OUTL P1,A ;KEEPING P17=1 IN SHIFT MODE. |
45 | MOV A,#80H ;FOR SHIFTING P16 DATA. |
46 | OUTL P1,A |
47 | DJNZ R3,NXTB ;DECREMENT R3 AND CHECK FOR 0 TO |
48 | MOV A,R4 ;SEE IF ALL 4 SHIFTS ARE OVER. |
49 | XRL A,R5 ;IF R4=R5 SIGNIFYING OLD DATA, |
50 | JZ START ;PROGRAM JUMPS TO START AT 0004 |
51 | DIGITSH: MOV A,R4 ;FOR NEW DATA, LOAD R5 WITH |
52 | MOV R5,A ;CONTENTS OF R4. |
53 | MOV A,R0 ;R0 SHIFTED TO R1. |
54 | MOV R1,A |
55 | MOV A,R4 ;NEW DATA IN R4 SHIFTED TO R0. |
56 | MOV R0,A |
57 | JMP START ;JUMP TO START FOR NEXT WORD. |
58 | OTOREG: MOV R5,#0FFH ;ONE TIME ONLY REG (R5)=#FF. |
59 | JMP START ;JUMP TO START FOR NEXT WORD. |
60 | ; |
61 | ORG 0300H ; TABLE ADDRESS |
62 | |
63 | DFB 3FH ;0 D7 D6 D5 D4 D3 D2 D1 D0 |
64 | DFB 06H ;1 dp g f e d c b a |
65 | DFB 5BH ;2 a |
66 | DFB 4FH ;3 --------- |
67 | DFB 66H ;4 | | |
68 | DFB 6DH ;5 f | | b |
69 | DFB 7DH ;6 | | |
70 | DFB 07H ;7 --------- |
71 | DFB 7FH ;8 | g | |
72 | DFB 6FH ;9 e | | c |
73 | DFB 77H ;A | | |
74 | DFB 7CH ;B --------- |
75 | DFB 58H ;C d |
76 | DFB 5EH ;D |
77 | DFB 79H ;E |
78 | DFB 71H ;F |
79 | DFB 00H ;BLANK |
80 | |
81 | END |
Quelle mußte leicht modifiziert werden: DFB->DB
1 | ;****************************************************** |
2 | ; |
3 | ; THIS IS AN EXAMPLE PROGRAM FOR THE 8048 PROCESSOR. |
4 | ; IT IS TAKEN FROM PAGE 335 OF THE NOVEMBER 15, 1984 |
5 | ; ISSUE OF EDN. |
6 | ; |
7 | ; DATA LOGGER SOFTWARE |
8 | ; BY: WUNNAVA V. SUBBARAO |
9 | ; FLORIDA INTERNATIONAL UNIVERSITY, MIAMI, FLORIDA |
10 | ; |
11 | INITIAL: MOV R0,#10 ;R0 & R1 LOADED WITH #10, WHICH |
12 | MOV R1,#10 ;HAS BLANK CODE LOCATION IN PAGE |
13 | START: CLR A ;THREE. |
14 | OUTL P1,A ;INPUT SHIFT REG IS IN LOAD MODE |
15 | OUTL BUS,A ;P17 & P16 AT 0. |
16 | CPL C ;CARRY COMPLEMENTED |
17 | JC DIGIT1 |
18 | DIGIT0: MOV A,#00 ;MAKE P20=0 ACTIVATING DIGIT 0 |
19 | OUTL P2,A ;IF CARRY=0 & LOAD R0 INTO A FOR |
20 | MOV A,R0 ;DISPLAY ON DIGIT 0. |
21 | JMP DISPLAY |
22 | DIGIT1: MOV A,#01 ;MAKE P20=1 ACTIVATING DIGIT 1 |
23 | OUTL P2,A ;IF CARRY=1 & LOAD R1 INTO A FOR |
24 | MOV A,R1 ;DISPLAY ON DIGIT 1. |
25 | DISPLAY: MOVP3 A,@A ;CONTENTS OF CODE TABLE ON PG 3 |
26 | OUTL BUS,A ;PUT ONTO DATA BUS. |
27 | MOV R6,#0FH |
28 | DLY1: DJNZ R6,DLY1 ;DELAY LOOP 1, SMALL DELAY. |
29 | JT1 OTOREG ;IF T1=1, JUMP TO NEXT LOAD. |
30 | MOV R6,#0FFH ;IF T1=0 PROGRAM CHECKS DEBOUNCE |
31 | DLY2: DJNZ R6,DLY2 ;IF SO, KEEP CHECKING DEBOUNCE. |
32 | JT1 OTOREG ;OTHERWISE JUMP TO NEXT LOAD. |
33 | SERDAT: MOV A,#80H ;P17 MADE 1 FOR SHIFT MODE. |
34 | OUTL P1,A |
35 | MOV R3,#04 ;SHIFT CTR R3 INITIALIZED TO 4. |
36 | MOV R4,#00 ;INITIALIZE DATA REGISTER TO 0. |
37 | NXTB: CLR C ;T0 EXAMINED & T0 CORRESPONDING |
38 | RDXIN: JNT0 SHIFTD ;DATA BIT IS SHIFTED INTO R4, IF |
39 | CPL C ;T0=0 (CARRY CLEARED);IF T0=1, |
40 | SHIFTD: MOV A,R4 ;SET CARRY=1, THEN SHIFT INTO R4 |
41 | RLC A |
42 | MOV R4,A |
43 | CLOCK: MOV A,#0C0H ;CLOCK SIGNAL GENERATED ON P16, |
44 | OUTL P1,A ;KEEPING P17=1 IN SHIFT MODE. |
45 | MOV A,#80H ;FOR SHIFTING P16 DATA. |
46 | OUTL P1,A |
47 | DJNZ R3,NXTB ;DECREMENT R3 AND CHECK FOR 0 TO |
48 | MOV A,R4 ;SEE IF ALL 4 SHIFTS ARE OVER. |
49 | XRL A,R5 ;IF R4=R5 SIGNIFYING OLD DATA, |
50 | JZ START ;PROGRAM JUMPS TO START AT 0004 |
51 | DIGITSH: MOV A,R4 ;FOR NEW DATA, LOAD R5 WITH |
52 | MOV R5,A ;CONTENTS OF R4. |
53 | MOV A,R0 ;R0 SHIFTED TO R1. |
54 | MOV R1,A |
55 | MOV A,R4 ;NEW DATA IN R4 SHIFTED TO R0. |
56 | MOV R0,A |
57 | JMP START ;JUMP TO START FOR NEXT WORD. |
58 | OTOREG: MOV R5,#0FFH ;ONE TIME ONLY REG (R5)=#FF. |
59 | JMP START ;JUMP TO START FOR NEXT WORD. |
60 | ; |
61 | ORG 0300H ; TABLE ADDRESS |
62 | DB 3FH ;0 D7 D6 D5 D4 D3 D2 D1 D0 |
63 | DB 06H ;1 dp g f e d c b a |
64 | DB 5BH ;2 a |
65 | DB 4FH ;3 --------- |
66 | DB 66H ;4 | | |
67 | DB 6DH ;5 f | | b |
68 | DB 7DH ;6 | | |
69 | DB 07H ;7 --------- |
70 | DB 7FH ;8 | g | |
71 | DB 6FH ;9 e | | c |
72 | DB 77H ;A | | |
73 | DB 7CH ;B --------- |
74 | DB 58H ;C d |
75 | DB 5EH ;D |
76 | DB 79H ;E |
77 | DB 71H ;F |
78 | DB 00H ;BLANK |
79 | END |
:
Bearbeitet durch User
1 | x:\>fc /b PRG.BIN mc_test.bin |
2 | Comparing files PRG.HEX and MC_TEST.BIN |
3 | 00000048: FF 00 |
4 | 00000049: FF 00 |
5 | ... |
Wenn du EPROMs schreiben willst, solltest du das Fuellbyte auf 0xFF aendern. Sieht ansonsten gut aus.
Danke für den Hinweis. Ich hatte "00H" gewählt, weil es für "NOP" steht. "FFH" läßt sich natürlich "nachbrennen" - gute Idee. Werde es einstellbar machen.
:
Bearbeitet durch User
Hm, auch wenn ich vor Jahrzehnten schon meine MCS-48 Controller entsorgt habe wäre es doch bestimmt für diejenigen, die damit noch etwas machen wollen "interessant", das Wiindowsprogramm hier zum Download angeboten zu bekommen, oder ?
Ralph S. schrieb: > Hm, auch wenn ich vor Jahrzehnten schon meine MCS-48 Controller entsorgt > habe wäre es doch bestimmt für diejenigen, die damit noch etwas machen > wollen "interessant", das Wiindowsprogramm hier zum Download angeboten > zu bekommen, oder ? Wenn du nicht solange warten willst: https://daveho.github.io/asm48/ >asm48 PRG.ASM *** asm48 v0.4.1 *** Assembled 785 bytes. Erfordert aber einige Anpassungen in der Assemblerquelle ORG -> .ORG DFB -> .DB usw. usf.
Motopick schrieb: > Wenn du nicht solange warten willst: > https://daveho.github.io/asm48/ Wie gesagt, ich brauche es ja nicht. Allerdings für die, die das interessiert, wäre der Code dann schon von Vorteil. :- ) für die, die einen Assembler für MCS-48 brauchen (und hier eben nicht fündig werden) gibt es "naken asm", der sehr klein, sehr schnell ist und einige andere MCU's dazu auch kann (wie bspw. MCS-51, AVR, STM8 etc.) https://www.mikekohn.net/micro/naken_asm.php
Wer heute noch mit MCS-48 arbeitet, der tut das meist im Kontext mit historischen Computern. Und da gibt es as, dieser Assembler unterstützt so ziemlich jeden älteren Mikrocontroller oder-prozessor. http://john.ccac.rwth-aachen.de:8000/as/
Soul E. schrieb: > im Kontext mit historischen Computern. Und da gibt es as, Es gibt alles, dennoch ist es eine schöne Übung, einen Assembler „from scratch“ zu bauen. Vielleicht nicht lebenswichtig, aber eine Art Ingenieur-Sudoku. Dieser 1-Pass Z80-Assembler z.B. ist einfach und geradeaus strukturiert (Lexer -> Compiler -> basta) und kann leicht aufgebohrt werden, um nützliche undokumentierte Opcodes zu erzeugen oder Intel-Hex statt binär auszugeben. Das ist gerade mein Zeitvertreib. https://github.com/sarnau/Z80DisAssembler
Ralph S. schrieb: > Motopick schrieb: >> Wenn du nicht solange warten willst: >> https://daveho.github.io/asm48/ > > Wie gesagt, ich brauche es ja nicht. Allerdings für die, die das > interessiert, wäre der Code dann schon von Vorteil. Ja ist doch. :) Man sollte aber lex und yacc dabei haben. Brauchen tue ich es auch nicht. Ein kommerzieller Crossassembler ist der Cross-32 Meta-Assembler. Der ist nun recht unversell: 1802, 320C1X, 320C2X, 320C5X, 34010, 37700, 3870, 4004, 50740, 64180, 6502, 65816, 6800, 68000, 6805, 6809, 68HC08, 68HC11, 68HC16, 782XX, 7831X, 80166, 80186, 80251B, 80251S, 8041, 8048, 8051, 8085, 8086, 8096, COP400, COP800, H8-300, H8-300H, H8-500, HMCS400, NEC7500, NEC7810, PIC165X, PIC16XX, PIC17XX, ST6, ST9, SUPER8, TLCS90, TMS370, TMS7000, TMS9900, V800, Z180, Z280, Z380, Z8, Z80 und Z8002 stehen da auf der Liste der unterstuetzten Prozessoren. > :- ) für die, die einen Assembler für MCS-48 brauchen (und hier eben > nicht fündig werden) gibt es "naken asm", der sehr klein, sehr schnell > ist und einige andere MCU's dazu auch kann (wie bspw. MCS-51, AVR, STM8 > etc.) > > https://www.mikekohn.net/micro/naken_asm.php Sieht interessant aus. Leider fehlen dem die TI-DSPs.
Motopick schrieb: > Der ist nun recht unversell: 1802, 320C1X, 320C2X, 320C5X, 34010, > 37700, 3870, 4004, 50740, 64180, 6502, 65816, 6800, 68000, 6805, 6809, > 68HC08, 68HC11, 68HC16, 782XX, 7831X, 80166, 80186, 80251B, 80251S, > 8041, 8048, 8051, 8085, 8086, 8096, COP400, COP800, H8-300, H8-300H, > H8-500, HMCS400, NEC7500, NEC7810, PIC165X, PIC16XX, PIC17XX, ST6, ST9, > SUPER8, TLCS90, TMS370, TMS7000, TMS9900, V800, Z180, Z280, Z380, Z8, > Z80 und Z8002 stehen da auf der Liste der unterstuetzten Prozessoren. Das wird nix werden. Dem fehlt die Unterstützung für 7805 und NE555... SCRN
Harald K. schrieb: > Motopick schrieb: >> Leider fehlen dem die TI-DSPs. > > Sind das MCS-48?! Wer nicht kognitiv beschraenkt ist, koennte die darauf emulieren. Und wer 555 benutzt, der weiss es nicht besser.
In der Anlage befindet sich der Assembler. Ich möchte mich an dieser Stelle ausdrücklich bei Kris Sekula für die Genehmigung zum Beipacken seiner Firmware des "EPROM EMULATOR NG" bedanken. Hinweise: Die Anwendung wurde weder zertifiziert noch signiert. Möglicherweise wird es Fehlermeldungen bei deren Start geben. Die Anwendung wurde auf einer 64Bit-Plattform kompiliert. Möglicherweise ist sie auf 32Bit-Betriebssystemen nicht lauffähig. Vor der Nutzung bitte ich die dem Archiv beigefügte Datei "Lesen.txt" gründlich zu "studieren". Danke. Themenbezogene, konstruktive Beiträge sind jederzeit willkommen - der Rest wird ignoriert.
:
Bearbeitet durch User
Der G. schrieb: > In der Anlage befindet sich der Assembler. Kein Sourcecode? Da muss man aber viel Gottvertrauen haben. Und ... was hat das unter "Projekte & Code" verloren?
Der G. schrieb: > In der Anlage befindet sich der Assembler. Wird der Source-Code noch nachgeliefert? Titel dieses Subforums: Hier könnt ihr Projekte, Schaltungen oder Codeschnipsel vorstellen. Projekte bitte nur mit Code oder Schaltplan posten (falls ihr nur Fotos vorstellen möchtet, bitte in "Zeigt her eure Kunstwerke"). Bitte hier keine Fragen posten. Wenn es keinen Source-Code gibt, muss ich den Thread nach "µC und Elektronik" verschieben.
Frank M. schrieb: > Wird der Source-Code noch nachgeliefert? im anderen, von Soul E. genannten Beispiel Beitrag "Re: 8048 Assembler für aktuelle Windows-Versionen" ist der Source-Code dabei.
Ich sehe hier den "Workflow" nicht. Es gibt wohl Assembler und "Treiber" für Windows, da ist dann aber auch gleich die Erklärung dabei, wie eingeschränkt die Nutzbarkeit ist. So gesehen erscheint diese Seite (s.o.) hier schon mal etwas freundlicher bzw. transparenter: https://github.com/daveho/asm48 Welche aber auch mit Bedacht zu genießen wäre, weil Windows früher ja auch einen DOS - Unterbau hatte, den man nutzen konnte. Und das war sogar recht trickreich gelöst. Aktuell könnte man z.B. schauen, was über WSL ginge, denn auch das gehört zum aktuellen Windows. https://blog.golioth.io/program-mcu-from-wsl2-with-usb-support/
Rbx schrieb: > Welche aber auch mit Bedacht zu genießen wäre, weil Windows früher ja > auch einen DOS - Unterbau hatte, den man nutzen konnte. Windows hat schon sehr, sehr lange keinen "DOS-Unterbau" mehr. Ernstgemeintes Windows hatte sogar noch nie einen, und das war schon vor über 30 Jahren. Aber den brauchts auch nicht, um stinknormale Kommandozeilenanwendungen nutzen zu können - dazu braucht man definitiv kein "WSL". Auch kein "cygwin" oder andere Krücken. Oh, und auch keine "bash". Das einzige, was der geneigte Ahnungslose kapieren muss, ist, daß ein Doppelklick auf die *.exe des Assemblers kein sinnvolles Resultat liefert.
Harald K. schrieb: > Windows hat schon sehr, sehr lange keinen "DOS-Unterbau" mehr. > Ernstgemeintes Windows hatte sogar noch nie einen, und das war schon vor > über 30 Jahren. Wobei man für "echte" DOS-Programme auf solchen Unterbau auch nicht mehr angewiesen ist. Dies kann man unter https://de.wikipedia.org/wiki/DOSBox (für alle heute üblichen Plattformen) ausführen. Die emuliert auch die damals üblichen Sound/Grafikkarten, die hier aber nicht benötigt werden.
Harald K. schrieb: > Das einzige, was der geneigte Ahnungslose kapieren muss, ist, daß ein > Doppelklick auf die *.exe des Assemblers kein sinnvolles Resultat > liefert. Ich sehe immer noch keinen Workflow. Soll das so etwas werden wie Jasmin?
Rbx schrieb: > Ich sehe immer noch keinen Workflow. Workflow? Das ist ein Kommandozeilenprogramm. Da kannst Du Dir jeden beliebigen "Workflow" drumherumbasteln, so, wie man das mit jedem beliebigen anderen Kommandozeilenprogramm auch macht. Wer oder was soll "jasmin" sein?
Im Zweifel kann man ja das Original von Intel auch heute noch benutzen:
1 | >ASM48 PRG.ASM |
2 | |
3 | ISIS-II MCS-48/UPI-41 MACRO ASSEMBLER, V4.2 |
4 | |
5 | ASSEMBLY COMPLETE, NO ERRORS |
6 | . |
7 | . |
8 | ASM48 PRG.ASM |
9 | |
10 | |
11 | |
12 | ISIS-II MCS-48/UPI-41 MACRO ASSEMBLER, V4.2 PAGE 1 |
13 | |
14 | |
15 | LOC OBJ LINE SOURCE STATEMENT |
16 | |
17 | 1 ;****************************************************** |
18 | 2 ; |
19 | 3 ; THIS IS AN EXAMPLE PROGRAM FOR THE 8048 PROCESSOR. |
20 | 4 ; IT IS TAKEN FROM PAGE 335 OF THE NOVEMBER 15, 1984 |
21 | 5 ; ISSUE OF EDN, AND AFTER ONLY FORMAT MODIFICATIONS, |
22 | 6 ; IT IS PASSED ON AS AN EXAMPLE, FREE OF CHARGE, |
23 | 7 ; BY UNIVERSAL CROSS-ASSEMBLERS. |
24 | 8 ; |
25 | 9 ; DATA LOGGER SOFTWARE |
26 | 10 ; BY: WUNNAVA V. SUBBARAO |
27 | 11 ; FLORIDA INTERNATIONAL UNIVERSITY, MIAMI, FLORIDA |
28 | 12 ; |
29 | 0000 B80A 13 INITIAL: MOV R0,#10 ;R0 & R1 LOADED WITH #10, WHICH |
30 | 0002 B90A 14 MOV R1,#10 ;HAS BLANK CODE LOCATION IN PAGE |
31 | 0004 27 15 START: CLR A ;THREE. |
32 | 0005 39 16 OUTL P1,A ;INPUT SHIFT REG IS IN LOAD MODE |
33 | 0006 02 17 OUTL BUS,A ;P17 & P16 AT 0. |
34 | 0007 A7 18 CPL C ;CARRY COMPLEMENTED |
35 | 0008 F610 19 JC DIGIT1 |
36 | 000A 2300 20 DIGIT0: MOV A,#00 ;MAKE P20=0 ACTIVATING DIGIT 0 |
37 | 000C 3A 21 OUTL P2,A ;IF CARRY=0 & LOAD R0 INTO A FOR |
38 | 000D F8 22 MOV A,R0 ;DISPLAY ON DIGIT 0. |
39 | 000E 0414 23 JMP DISPLAY |
40 | 0010 2301 24 DIGIT1: MOV A,#01 ;MAKE P20=1 ACTIVATING DIGIT 1 |
41 | 0012 3A 25 OUTL P2,A ;IF CARRY=1 & LOAD R1 INTO A FOR |
42 | 0013 F9 26 MOV A,R1 ;DISPLAY ON DIGIT 1. |
43 | 0014 E3 27 DISPLAY: MOVP3 A,@A ;CONTENTS OF CODE TABLE ON PG 3 |
44 | 0015 02 28 OUTL BUS,A ;PUT ONTO DATA BUS. |
45 | 0016 BE0F 29 MOV R6,#0FH |
46 | 0018 EE18 30 DLY1: DJNZ R6,DLY1 ;DELAY LOOP 1, SMALL DELAY. |
47 | 001A 5644 31 JT1 OTOREG ;IF T1=1, JUMP TO NEXT LOAD. |
48 | 001C BEFF 32 MOV R6,#0FFH ;IF T1=0 PROGRAM CHECKS DEBOUNCE |
49 | 001E EE1E 33 DLY2: DJNZ R6,DLY2 ;IF SO, KEEP CHECKING DEBOUNCE. |
50 | 0020 5644 34 JT1 OTOREG ;OTHERWISE JUMP TO NEXT LOAD. |
51 | 0022 2380 35 SERDAT: MOV A,#80H ;P17 MADE 1 FOR SHIFT MODE. |
52 | 0024 39 36 OUTL P1,A |
53 | 0025 BB04 37 MOV R3,#04 ;SHIFT CTR R3 INITIALIZED TO 4. |
54 | 0027 BC00 38 MOV R4,#00 ;INITIALIZE DATA REGISTER TO 0. |
55 | 0029 97 39 NXTB: CLR C ;T0 EXAMINED & T0 CORRESPONDING |
56 | 002A 262D 40 RDXIN: JNT0 SHIFTD ;DATA BIT IS SHIFTED INTO R4, IF |
57 | 002C A7 41 CPL C ;T0=0 (CARRY CLEARED);IF T0=1, |
58 | 002D FC 42 SHIFTD: MOV A,R4 ;SET CARRY=1, THEN SHIFT INTO R4 |
59 | 002E F7 43 RLC A |
60 | 002F AC 44 MOV R4,A |
61 | 0030 23C0 45 CLOCK: MOV A,#0C0H ;CLOCK SIGNAL GENERATED ON P16, |
62 | 0032 39 46 OUTL P1,A ;KEEPING P17=1 IN SHIFT MODE. |
63 | 0033 2380 47 MOV A,#80H ;FOR SHIFTING P16 DATA. |
64 | 0035 39 48 OUTL P1,A |
65 | 0036 EB29 49 DJNZ R3,NXTB ;DECREMENT R3 AND CHECK FOR 0 TO |
66 | 0038 FC 50 MOV A,R4 ;SEE IF ALL 4 SHIFTS ARE OVER. |
67 | 0039 DD 51 XRL A,R5 ;IF R4=R5 SIGNIFYING OLD DATA, |
68 | 003A C604 52 JZ START ;PROGRAM JUMPS TO START AT 0004 |
69 | 003C FC 53 DIGITSH: MOV A,R4 ;FOR NEW DATA, LOAD R5 WITH |
70 | 003D AD 54 MOV R5,A ;CONTENTS OF R4. |
71 | |
72 | |
73 | |
74 | ISIS-II MCS-48/UPI-41 MACRO ASSEMBLER, V4.2 PAGE 2 |
75 | |
76 | |
77 | LOC OBJ LINE SOURCE STATEMENT |
78 | |
79 | 003E F8 55 MOV A,R0 ;R0 SHIFTED TO R1. |
80 | 003F A9 56 MOV R1,A |
81 | 0040 FC 57 MOV A,R4 ;NEW DATA IN R4 SHIFTED TO R0. |
82 | 0041 A8 58 MOV R0,A |
83 | 0042 0404 59 JMP START ;JUMP TO START FOR NEXT WORD. |
84 | 0044 BDFF 60 OTOREG: MOV R5,#0FFH ;ONE TIME ONLY REG (R5)=#FF. |
85 | 0046 0404 61 JMP START ;JUMP TO START FOR NEXT WORD. |
86 | 62 ; |
87 | 0300 63 ORG 0300H ; TABLE ADDRESS |
88 | 64 |
89 | 0300 3F 65 DB 3FH ;0 D7 D6 D5 D4 D3 D2 D1 D0 |
90 | 0301 06 66 DB 06H ;1 dp g f e d c b a |
91 | 0302 5B 67 DB 5BH ;2 a |
92 | 0303 4F 68 DB 4FH ;3 --------- |
93 | 0304 66 69 DB 66H ;4 | | |
94 | 0305 6D 70 DB 6DH ;5 f | | b |
95 | 0306 7D 71 DB 7DH ;6 | | |
96 | 0307 07 72 DB 07H ;7 --------- |
97 | 0308 7F 73 DB 7FH ;8 | g | |
98 | 0309 6F 74 DB 6FH ;9 e | | c |
99 | 030A 77 75 DB 77H ;A | | |
100 | 030B 7C 76 DB 7CH ;B --------- |
101 | 030C 58 77 DB 58H ;C d |
102 | 030D 5E 78 DB 5EH ;D |
103 | 030E 79 79 DB 79H ;E |
104 | 030F 71 80 DB 71H ;F |
105 | 0310 00 81 DB 00H ;BLANK |
106 | 82 |
107 | 83 END |
108 | |
109 | USER SYMBOLS |
110 | CLOCK 0030 DIGIT0 000A DIGIT1 0010 DIGITS 003C DISPLA 0014 DLY1 0018 DLY2 001E INITIA 0000 |
111 | NXTB 0029 OTOREG 0044 RDXIN 002A SERDAT 0022 SHIFTD 002D START 0004 |
112 | |
113 | ASSEMBLY COMPLETE, NO ERRORS |
Motopick schrieb: > Im Zweifel kann man ja das Original von Intel auch heute noch benutzen ... wenn man eine Umgebung hat, unter der das noch läuft. Da braucht man halt DOSBox, ein 32-Bit-Windows oder eine andere Art der Emulation. BTW: Wo findet sich das Original?
Harald K. schrieb: > Motopick schrieb: >> Im Zweifel kann man ja das Original von Intel auch heute noch benutzen > > ... wenn man eine Umgebung hat, unter der das noch läuft. Da braucht man > halt DOSBox, ein 32-Bit-Windows oder eine andere Art der Emulation. > > BTW: Wo findet sich das Original? (M)Ein 64 bittiges kann das viel einfacher. :) >MSDOS ISIS.EXE DOS ISIS environment V1.0 =asm48 prg.asm ISIS-II MCS-48/UPI-41 MACRO ASSEMBLER, V4.2 ASSEMBLY COMPLETE, NO ERRORS =exit Das Original findet sich natuerlich bei Intel. Eine Kopie konnte(/kann) man anfordern, oder muss sie selbst finden. LICENSE: Intel grants you ... "You agree to prevent any unauthorized copying of the Software."
Motopick schrieb: > Das Original findet sich natuerlich bei Intel. > Eine Kopie konnte(/kann) man anfordern, oder muss sie selbst finden. Tolle Antwort.
Beitrag #7728225 wurde vom Autor gelöscht.
In der Anlage findet Ihr eine Vorlage für ein 8048-Testbrett. Ich stelle die Daten unter Public Domain. Nicht ganz uneigennützig verweise ich hier auf folgenden Diskussionfaden: Beitrag "[V] Leerplatine 8048 Testbrett" Es ist immer noch einer Leerplatine vorhanden.
:
Bearbeitet durch User
Moin, Soul E. schrieb: > Wer heute noch mit MCS-48 arbeitet, der tut das meist im Kontext > mit > historischen Computern. Und da gibt es as, dieser Assembler unterstützt > so ziemlich jeden älteren Mikrocontroller oder-prozessor. > > http://john.ccac.rwth-aachen.de:8000/as/ Yeah! Mit dem habbich mal vor zig Jahren gewerkelt, habe noch ein paar 8741, mit denen ich damals noch bisschen gebastelt habe. Der taugt. Gruss WK
Frank M. schrieb: > Wird der Source-Code noch nachgeliefert? Natürlich nicht. Das ganze ist doch von vornherein als Systemkritik angelegt. Der G. schrieb: > Präambel > > Im folgenden werde ich das Projekt als Objektcode bereitstellen, > ungeachtet der Defizite des momentanen Bewertungssystems. Oliver
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.