Komputery z Z80 > MSX

Programowanie MSX assembler - pytania, hello-world

<< < (2/6) > >>

siudym:
To już spora pomoc, dzięki. Za jakiś czas zabiorę się za temat i w razie problemów będę pisał :) Co do filmiku i samej stronki "ChibiAkumas" to podchodzę ze sporym dystansem bo tam sporo informacji jakby po łebkach przekazywane i mocno na ilość systemów idą (masowe hello-worldy). Nawet mając już spore doświadczenie z 6502/NES byłem zakręcony czytając tutorial o nim :)

siudym:
Dosyc to wszystko skomplikowane, ale w sumie to moj pierwszy komputer, widac konsole sa znacznie prosciej zaprojektowane.

Przykladowy kod zapisu czegos do VRAM - rozumiem, ze do "C" pobierany jest adres portu/rejestru "VDP writing port#1" na poczatku z $0007 ?
Bo na koncu w C znajduje sie juz VDP writing port#0 - zostal od pobrany ze zmniejszonej wartosci "C" o jeden i z portu 1 zrobil sie 0?



--- Kod: ---;-------------------------------
; Write a byte in VRAM routine
;
; Entry : BHL = VRAM address
;         D = Value
; Modify: AF, C
;-------------------------------
WRTVRM:
ld a,(0007h) ; Main-ROM must be selected on page 0000h-3FFFh
inc a
ld  c,a ; C = CPU port #99h (VDP writing port#1)
 
; -> Sets the bits a16-a14 to r#14 (MSX2 or newer, remove these 9 lines if MSX1)
ld  a,h
and a,0c0h
or  a,b
rlca
rlca
 
di ; Interrupts must be disabled here
out (c),a
ld  a,080h+14
out (c),a
; <-
 
ld  a,h
and a,03fh
or  a,040h
out (c),l ; Sets the bits a7-a0 to the port#1
out (c),a ; Sets the bits a13-a8 to the port#1
ei
dec c ; C = CPU port #98h (VDP port #0)
out (c),d ; Write the value to the port#0
ret

--- Koniec kodu ---

siudym:
Sorki, za posty pod postem ale nie mam edycji:

Muszę poprosić o pomoc w sprawie SLOT'ów w MSX.
W Sega Master System było to dosyć jasne i proste:

$0000-$3FFF to SLOT 0 (ROM 16KB)
$4000-$7FFF to SLOT 1 (ROM 16KB)
$8000-$BFFF to SLOT 2 (ROM16KB)
$C000-$FFFF to SLOT 3 (RAM 16KB a dokladnie 8KB WRAM ($C000-$DFFF) z mirrorem na $E000-$FFFF

W przypadku MSX jest niby podobnie, ale nieco dla mnie niejasne:

- mamy 32KB MAIN ROM (BIOS), ktory jest zamapowany pod $0000-$3FFF oraz $4000-$7FFF czyli SLOT 0 i SLOT 1 - zgadza sie?
- SLOT 1 i 2 to tzw "CARTRIDGE SLOTS" - tu niejasne bo SLOT 0/1 zajmuje MAIN ROM i nie wiem czy druga czesc MAIN ROM
  jest wtedy nieuzywana i SLOT 1 zwalnia sie dla ROM w kartridzu?
- SLOT 3 to WRAM ? - tu takze nie mam jasnosci, bo gdy MSX ma 8KB WRAM to wtedy ta pamiec jest pod $E000-FFFF
  a co znajduje sie wtedy w $C000-$DFFF?
- gdy msx ma 64KB to SLOT 3 musi byc przelaczany na SUB-SLOT'y po 16KB ? (cztery banki RAM)

Ciezko to ogarnac :)

EDIT:

Zerkajac na PCB MSX to widze zlacza CARTRIDGE opisane SLOT 1 i SLOT 2. Domyslam sie teraz, ze SLOT 1 zawierajacy cartridge mapuje sie pod $4000 jednoczesnie zabierajac jakas czesc MAIN ROM / BIOS ? Natomiast zlacze SLOT 3 to pewnie expansion WRAM, czyli 8KB na plycie zamapowane pod E000 po wsadzeniu expa 8KB zamapuje sie pod C000 ?

siudym:
Sorki za posty pod postem.  ;)

Więc tak... Maszynka ogarnięta w stopniu mnie zadowalającym. Wysyłam proste test-demko gry platformowej, grafika MODE 0 (SCREEN 1), ROM 32KB, asembler TNIASM - nie testowane na realnym MSX:

https://dl.dropboxusercontent.com/s/cyompte6mj3j1xm/msxdemo.rom

Filmek:
https://www.youtube.com/watch?v=Kk1MtXMFPhU

Na chwilę obecną temat leci do archiwum i czeka na jakąś nieznaną jeszcze chwilę, gdy do niego wrócę i może jakąś prostą grę napiszę :)

Tygrys:
Fajny sampel miejętności ;)

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

[*] Poprzednia strona

Idź do wersji pełnej