OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů

Byl jednou jeden nerd

Právě je 01.06.2020, 03:07

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 21 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: SC/MP assembler
PříspěvekNapsal: 11.04.2018, 14:17 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1442
Bydliště: Kósek vod Brna
Has thanked: 67 times
Been thanked: 102 times
Konečně jsem našel šikovný nástroj pro experimentování v SC/MP kódu

https://sourceforge.net/projects/scmp-emulator/?source=typ_redirect

Je to v javě, čili kdo má runtime, tak to musí chodit.

Vypadá to asi takle, po spuštění programu, který jsem si dovoli okomentovat v následujícím příspěvku


Přílohy:
scmp.png
scmp.png [ 21.33 KiB | Zobrazeno 4178 krát ]

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800
Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 11.04.2018, 14:20 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1442
Bydliště: Kósek vod Brna
Has thanked: 67 times
Been thanked: 102 times
Zde disassemblovaný soubor z příkladu přiloženého k emulátoru, jsem si dovolil okomentovat, zejména proto, abych jej sám pochopil

Kód:
0000           08        . NOP         ; začíná se od 0001 :-)
0001           c4 00     . LDI X'00      ; Load P1 with 0700h
0003           31        . XPAL 1              ;  L < 00
0004           c4 07     . LDI X'07
0006           35        . XPAH 1              ; H < 07
0007           c4 00     . LDI X'00      ; do A 00, což je prázdný znak (žádný ze 7 seg nebo DT)
0009           c9 07     . ST  7(1)      ; a uloží na 0700 + 7    (1) znamená P1
000b           c4 79     . LDI X'79      ; do A 79h, což je binárně 0111 1001 člii E (svítí vše krom pravých seg. a DT)
000d           c9 06     . ST  6(1)      ; a uloží na 0700 + 6
000f           c4 50     . LDI X'50      ; do A 50h, což je binárně 0101 0000 čili r
0011           c9 05     . ST  5(1)      ;uloží se na 3 místa
0013           c9 04     . ST  4(1)
0015           c9 02     . ST  2(1)
0017           c4 5c     . LDI X'5c      ; do A 5ch, což je binárně 0101 1100 čili o
0019           c9 03     . ST  3(1)
001b           c4 80     . LDI X'80      ; nakonec 80h což je desetinná tečka
001d           c9 01     . ST  1(1)
001f           c9 00     . ST  0(1)      
0021           00        . HALT         ;celý nápis čtený odzadu 'Error..'


Kó znaků není ASCII, ale přímý kód pro 7 segmentový displej, FFh rozsvítí '8.' čili všechny segmenty a DT

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 12.04.2018, 10:20 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1442
Bydliště: Kósek vod Brna
Has thanked: 67 times
Been thanked: 102 times
Tady jsem našel použitelný assembler, bohužel, nebo spíše naštěstí s jinou syntaxí než disassembler a to co známe z MK14 manuálu. To mně ale nevadí, zdá se to srozumitelnější.

https://www.sbprojects.net/sbasm/download.php

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 12.04.2018, 10:42 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14.05.2013, 19:10
Příspěvky: 1299
Bydliště: Kurim
Has thanked: 514 times
Been thanked: 367 times
Ja pouzivam TASM a tabulky pro 8060 odtud

http://s400081762.websitehome.co.uk/pau ... /howto.htm

Hned vedle najdete i programky

http://s400081762.websitehome.co.uk/pau ... ftware.htm

_________________
http://www.8bity.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 12.04.2018, 12:18 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1442
Bydliště: Kósek vod Brna
Has thanked: 67 times
Been thanked: 102 times
A používáš to s DOSboxem, nebo přes GUI? V tom GUI jaxi neumím aplikovat tu 8060 tabulku

//tak už jsem ho taky zlomil. Uvidím na co si líp zvyknu, škoda že kód z disassembleru není kompatibilní se žádným z nich

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 13.04.2018, 13:51 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1442
Bydliště: Kósek vod Brna
Has thanked: 67 times
Been thanked: 102 times
Tak další problém s TASM. Původní assembler pro SC/MP uměl direktivu LDI H(label) a LDI L(label) (nahrazení parametru L a H byty labelu) v SB assembleru to má taky ošetřený, jen nevím jak to řeší TASM

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 13.04.2018, 20:10 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14.05.2013, 19:10
Příspěvky: 1299
Bydliště: Kurim
Has thanked: 514 times
Been thanked: 367 times
Zkus "ldi High(label)" a "ldi Low(label)".

_________________
http://www.8bity.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 13.04.2018, 22:47 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1442
Bydliště: Kósek vod Brna
Has thanked: 67 times
Been thanked: 102 times
Tak to bohužel nefunguje, to je direktiva z Turbo assembleru. Tady v tom Telemark assembleru to asi neřeší, alespoň jsem v manuálu nic nenašel. Napadla mě ale jedna možnost, sice to hlásí chybu, ale zkompiluje to. Dá se v nastavení zadat ignorování této chyby

Kód:
      0001   0200                   .ORG 0200h
      0002   0200 C4 02             LDI    FCE/256      ;vydělím adresu 256 a mám MS
      0003   0202 37                XPAH   3
      test8086.asm line 0004: Unused data in MS byte of argument. (2)
      0004   0203 C4 07             LDI    FCE         ;tady to zapíše LS, ale s varováním
      0005   0205 33                XPAL   3
      0006   0206 3F                XPPC   3
      0007   0207             
      0008   0207                   
      0009   0207                   
      0010   0207 C4 76       FCE:   LDI   76h
      0011   0209 C4 38             LDI   38h
      0012   020B 3F                XPPC 3
      0013   020C                   
      0014   020C                   .END
      0015   020C             
      tasm: Number of errors = 1

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 14.04.2018, 08:33 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14.05.2013, 19:10
Příspěvky: 1299
Bydliště: Kurim
Has thanked: 514 times
Been thanked: 367 times
Sorry, ja to mam pres #define na zacatku a kopiruju to tak nejak atuomaticky, ze jsem si ani neuvedomil, ze to tam neni primo. V priloze je prelozitelny zdrojak ROM i TASM 3.2, da se z toho inspirovat.

Kód:
#define High(x)         (((x) >> 8) & 15)
#define Low(x)          ((x) & 255)


Přílohy:
TASM8060_SCIOSN.zip [45.05 KiB]
225 krát

_________________
http://www.8bity.cz
Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 14.04.2018, 19:24 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1442
Bydliště: Kósek vod Brna
Has thanked: 67 times
Been thanked: 102 times
Jo, díky to sice funguje, ale zas to neumím aplikovat v definici makra pro call. Vrátil jsem se k SB-assembleru. A uvědomil jsem si, že je tam ošetřen i pre-increment, vygeneruje to adresu funkce o 1 menší.

//kód z listingu je poněkud nekompatibilní


Kód:
0000-         4
0000-                  5
0000-                  6
0200-                  7                        .ORG 0200h
0200-                  8
0200-C4 02 37 C4
     06 33 3F          9                        JS P3,FCE
0207-                 10
0207-C4 76         11 (  10) FCE:       LDI     76h
0209-C4 38         12 (  10)               LDI     38h
020B-3F              13 (   7)               RET P3
020C-                 14
020C-                 15                        .END

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 14.04.2018, 23:36 
Offline
Pan Generální

Registrován: 16.06.2014, 12:23
Příspěvky: 2872
Bydliště: Jesenice u Prahy
Has thanked: 19 times
Been thanked: 157 times
A vono to umí call ? :)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 15.04.2018, 05:47 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1442
Bydliště: Kósek vod Brna
Has thanked: 67 times
Been thanked: 102 times
Neumí, chtěl jsem napsat makro. A v SB už to má zadrátovaný natvrdo jako JS (jump subroutine)

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Naposledy upravil microlan dne 15.04.2018, 08:31, celkově upraveno 1

Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 15.04.2018, 07:44 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14.05.2013, 19:10
Příspěvky: 1299
Bydliště: Kurim
Has thanked: 514 times
Been thanked: 367 times
Co takhle?
Kód:
#define High(x)         (((x) >> 8) & 15)
#define Low(x)          ((x) & 255)
#define DatPtr(a)       ((a)+1)
#define DatPtrD(a)   ((a)-1)
#define js(x,y)      ldi High(DatPtrD(y))\ xpah x\ ldi Low(DatPtrD(y))\ xpal x\ xppc x

_________________
http://www.8bity.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 15.04.2018, 08:33 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 16.03.2017, 11:36
Příspěvky: 1442
Bydliště: Kósek vod Brna
Has thanked: 67 times
Been thanked: 102 times
Tak to funguje, díky. Je lepší, držet jeden systém. A spouštíš to v DOSboxu? Jen nerozumím proč po rotaci ta 15

(((x) >> 8) & 15)

_________________
TEMS-49, PMI-80, rep. MK14, ZX81, ZXspectrum+, TI58, MZ-800


Naposledy upravil microlan dne 15.04.2018, 09:33, celkově upraveno 1

Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 15.04.2018, 08:57 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14.05.2013, 19:10
Příspěvky: 1299
Bydliště: Kurim
Has thanked: 514 times
Been thanked: 367 times
Ne, normalne v prikazove radce. DOSBox pouzivam jen na MK14.COM v1.9, coz je jediny emulator o kterem vim, ze podporuje VDU (a stejne blbe).

_________________
http://www.8bity.cz


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 21 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz