OldComp.cz

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

Reklama!

Právě je 18 pro 2018, 19:49

Všechny časy jsou v UTC + 1 hodina




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 dub 2018, 13:17 
Offline
Profík
Uživatelský avatar

Registrován: 16 bře 2017, 10:36
Příspěvky: 662
Bydliště: Kósek vod Brna
Has thanked: 29 times
Been thanked: 43 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 2037 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 dub 2018, 13:20 
Offline
Profík
Uživatelský avatar

Registrován: 16 bře 2017, 10:36
Příspěvky: 662
Bydliště: Kósek vod Brna
Has thanked: 29 times
Been thanked: 43 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 dub 2018, 09:20 
Offline
Profík
Uživatelský avatar

Registrován: 16 bře 2017, 10:36
Příspěvky: 662
Bydliště: Kósek vod Brna
Has thanked: 29 times
Been thanked: 43 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 dub 2018, 09:42 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14 kvě 2013, 18:10
Příspěvky: 1107
Bydliště: Kurim
Has thanked: 364 times
Been thanked: 303 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 dub 2018, 11:18 
Offline
Profík
Uživatelský avatar

Registrován: 16 bře 2017, 10:36
Příspěvky: 662
Bydliště: Kósek vod Brna
Has thanked: 29 times
Been thanked: 43 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 dub 2018, 12:51 
Offline
Profík
Uživatelský avatar

Registrován: 16 bře 2017, 10:36
Příspěvky: 662
Bydliště: Kósek vod Brna
Has thanked: 29 times
Been thanked: 43 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 dub 2018, 19:10 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14 kvě 2013, 18:10
Příspěvky: 1107
Bydliště: Kurim
Has thanked: 364 times
Been thanked: 303 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 dub 2018, 21:47 
Offline
Profík
Uživatelský avatar

Registrován: 16 bře 2017, 10:36
Příspěvky: 662
Bydliště: Kósek vod Brna
Has thanked: 29 times
Been thanked: 43 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 dub 2018, 07:33 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 14 kvě 2013, 18:10
Příspěvky: 1107
Bydliště: Kurim
Has thanked: 364 times
Been thanked: 303 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]
45 krát

_________________
http://www.8bity.cz
Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 14 dub 2018, 18:24 
Offline
Profík
Uživatelský avatar

Registrován: 16 bře 2017, 10:36
Příspěvky: 662
Bydliště: Kósek vod Brna
Has thanked: 29 times
Been thanked: 43 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 dub 2018, 22:36 
Offline
Pan Štábní

Registrován: 16 čer 2014, 11:23
Příspěvky: 1994
Bydliště: Jesenice
Has thanked: 9 times
Been thanked: 117 times
A vono to umí call ? :)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: SC/MP assembler
PříspěvekNapsal: 15 dub 2018, 04:47 
Offline
Profík
Uživatelský avatar

Registrován: 16 bře 2017, 10:36
Příspěvky: 662
Bydliště: Kósek vod Brna
Has thanked: 29 times
Been thanked: 43 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 dub 2018, 07:31, celkově upraveno 1

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

Registrován: 14 kvě 2013, 18:10
Příspěvky: 1107
Bydliště: Kurim
Has thanked: 364 times
Been thanked: 303 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 dub 2018, 07:33 
Offline
Profík
Uživatelský avatar

Registrován: 16 bře 2017, 10:36
Příspěvky: 662
Bydliště: Kósek vod Brna
Has thanked: 29 times
Been thanked: 43 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 dub 2018, 08:33, celkově upraveno 1

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

Registrován: 14 kvě 2013, 18:10
Příspěvky: 1107
Bydliště: Kurim
Has thanked: 364 times
Been thanked: 303 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


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:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz