Forum: Projekte & Code 8048 Assembler für aktuelle Windows-Versionen


von Der G. (gutmensch)


Angehängte Dateien:

Lesenswert?

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
von Motopick (motopick)


Lesenswert?

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

von Der G. (gutmensch)


Angehängte Dateien:

Lesenswert?

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
von Motopick (motopick)


Lesenswert?

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.

von Der G. (gutmensch)


Lesenswert?

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
von Ralph S. (jjflash)


Lesenswert?

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 ?

von Motopick (motopick)


Lesenswert?

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.

von Ralph S. (jjflash)


Lesenswert?

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

von Soul E. (soul_eye)


Lesenswert?

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/

von Martin H. (horo)


Lesenswert?

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

von Motopick (motopick)


Lesenswert?

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.

von Harald K. (kirnbichler)


Lesenswert?

Motopick schrieb:
> Leider fehlen dem die TI-DSPs.

Sind das MCS-48?!

von Rick (rick)


Lesenswert?

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

von Motopick (motopick)


Lesenswert?

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.

von Der G. (gutmensch)


Angehängte Dateien:

Lesenswert?

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
von Harald K. (kirnbichler)


Lesenswert?

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?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

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.

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

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.

von Rbx (rcx)


Lesenswert?

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/

von Harald K. (kirnbichler)


Lesenswert?

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.

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

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.

von Rbx (rcx)


Lesenswert?

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?

von Harald K. (kirnbichler)


Lesenswert?

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?

von Motopick (motopick)


Lesenswert?

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

von Harald K. (kirnbichler)


Lesenswert?

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?

von Motopick (motopick)


Lesenswert?

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."

von Harald K. (kirnbichler)


Lesenswert?

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.
von Der G. (gutmensch)


Angehängte Dateien:

Lesenswert?

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
von Dergute W. (derguteweka)


Lesenswert?

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

von Oliver S. (oliverso)


Lesenswert?

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
Noch kein Account? Hier anmelden.