# MSX-2 SCREEN Concept The **MSX-2 SCREEN concept** revolves around *multiple screen modes*, each tailored for different use cases like text, tile-based graphics, bitmapped images, and sprites. MSX-2 greatly expanded upon the original MSX video capabilities by leveraging the **Yamaha V9938** video display processor (VDP), allowing for higher resolution, more colors, and multiple VRAM pages. --- ## 🎨 Overview of SCREEN Modes in MSX-2 | Mode | Type | Resolution | Colors | Description | |------------|----------|----------------|------------------|----------------------------------------------| | SCREEN 0 | Text | 40×24 (text) | 2 colors | Default text screen (40 columns) | | SCREEN 1 | Text | 32×24 (text) | 15 colors (limited) | Colorful, 32-column text mode | | SCREEN 2 | Tile | 256×192 | 16 (per 8×1 area) | Tile-based mode for games | | SCREEN 4 | Tile | 256×212 | 16 (fixed palette) | MSX2 version of SCREEN 2 | | SCREEN 5 | Bitmap | 256×212 | 16 (from 512) | Direct pixel graphics | | SCREEN 6 | Bitmap | 512×212 | 4 (from 512) | High-res graphics mode | | SCREEN 7 | Bitmap | 512×212 | 16 (from 512) | High-res, 16-color mode | | SCREEN 8 | Bitmap | 256×212 | 256 (fixed) | 8-bit color mode (no sprite support) | | SCREEN 10 | YJK | 256×212 | ~12,000 (YJK) | Photo-realistic color encoding | | SCREEN 11 | YJK+PAL | 256×212 | ~12,000 + 16 | YJK with palette override | | SCREEN 12 | YJK | 512×212 | ~12,000 | Hi-res YJK mode (MSX2+) | --- ## 📦 Concepts Behind the SCREEN System ### 1. Tile Modes vs Bitmap Modes - **Tile-based (SCREEN 1–4):** - Use **character patterns** and **name tables**. - Efficient and fast—perfect for retro-style games. - **Bitmap modes (SCREEN 5–8, 10–12):** - Allow **per-pixel** control. - Best for drawing, images, or artistic apps. --- ### 2. Color System - MSX-1: fixed 16-color palette. - MSX-2: - **512-color palette** - Custom palette via `COLOR=` or `VDP` register. - Bitmap screens can use these with up to 16 or 256 colors. - YJK modes allow 12,000+ virtual colors. --- ### 3. Pages - Most modes support **multiple VRAM pages**. - You can: - Draw on one page. - Show another page. - Swap for **smooth animation** (double-buffering). --- ### 4. Sprites - Used in SCREEN 1–7. - **32 hardware sprites**, up to 16 colors. - Limit: **4 sprites per scanline**. --- ### 5. VRAM Layout - Use `VPOKE`, `VPEEK`, and `COPY` to directly manage VRAM: - Tiles, bitmaps, sprite patterns, palettes, etc. --- ## 🧪 Example: Draw a Pixel in SCREEN 5 ```basic SCREEN 5 PSET (100, 100), 15 ' White pixel
Saturday, April 12, 2025
MSX-2 SCREEN Concept
Build labels resolving script for MSX Basic with chatGpt
<# .SYNOPSIS Processes a text file by adding line numbers and replacing label-based GOTO/GOSUB commands. .DESCRIPTION - Each line is numbered sequentially starting from a given Start, with an increment of Step. - Labels (lines starting with ':') are replaced with a numbered line containing "REM :label". - GOSUB and GOTO commands referencing a label (e.g., "gosub myLabel") are replaced with the numeric line. - Case-insensitive matching for labels and commands. .PARAMETER FilePath Path to the file to process. .PARAMETER Start Starting number for line numbering (default: 10). .PARAMETER Step Increment step for line numbering (default: 10). .EXAMPLE .RenumberWithLabels.ps1 -FilePath "C:codescript.bas" -Start 10 -Step 10 #> param( [string]$FilePath, [int]$Start = 10, [int]$Step = 10 ) if (-not (Test-Path $FilePath)) { Write-Error "File not found: $FilePath" exit 1 } $lines = Get-Content $FilePath $output = @() $labelMap = @{} $lineNumber = $Start # First pass: assign line numbers and store label mappings foreach ($line in $lines) { $trimmed = $line.Trim() if ($trimmed -match '^:([a-zA-Z_][w]*)$') { $label = $matches[1] $labelMap[$label.ToLower()] = $lineNumber $output += "$lineNumber REM :$label" } else { $output += "$lineNumber $line" } $lineNumber += $Step } # Second pass: replace GOSUB/GOTO label references for ($i = 0; $i -lt $output.Count; $i++) { $line = $output[$i] foreach ($label in $labelMap.Keys) { $line = $line -replace "(?i)bgosubs+:?$labelb", "gosub $($labelMap[$label])" $line = $line -replace "(?i)bgotos+:?$labelb", "GOTO $($labelMap[$label])" } $output[$i] = $line } # Save to file or print $output | Set-Content "$FilePath.processed" Write-Host "Processed file saved as: $FilePath.processed"
Friday, April 11, 2025
Create MSX-2 deploy script with AI. (Draft)
MSX-2 Disk Deployment Script Requirements
This document outlines the complete functionality for a PowerShell script that builds a bootable MSX-2 .dsk image from a BASIC project.
Input Parameters
- MainBasPath (Required, String): Full path to the main .BAS file.
- ProjectName (Optional, String): Optional project name. Defaults to the base name of the .BAS file.
Folder and File Structure
Work Folder
- Location: Sibling to the folder containing MainBasPath.
- Name Format: ProjectName_Hash (the hash is 6 characters from a GUID).
- Contents: Renumbered .BAS files and AUTOEXEC.BAS.
Disk Image
- Name: ProjectName.dsk.
- Location: Same parent folder as the folder containing MainBasPath.
- Base: Created by copying the "New 720KB Boot Disk.dsk" template.
- Overwrite: If the file already exists, it is overwritten.
Steps
-
Resolve and Print All Paths
- Compute all paths (folders, tools, and output) at the top of the script and print them.
-
Create Work Folder
- Create a work folder as a sibling to the project folder using the format: ProjectName_Hash.
-
Create AUTOEXEC.BAS
- Create AUTOEXEC.BAS in the work folder.
- The file content should be: RUN "MainFile.BAS" (using the actual main file name), written in ASCII.
-
Copy and Renumber .BAS Files
- Copy all .BAS files from the folder containing MainBasPath to the work folder.
- Renumber each .BAS file by calling the external renumbering script:
D:WorkspaceMSXtoolsrenumber.ps1 -FilePath
-Step 10 -Start 10
-
Create and Populate Disk Image
- Copy the template image "New 720KB Boot Disk.dsk" to the destination DiskImage path, overwriting any existing file.
- Add each file from the work folder to the disk image using the command:
dsktool.exe A "C:pathtoimage.dsk" "C:pathtofile.ext"
- If adding a file fails, print the exact command used for troubleshooting.
-
Cleanup or Error Handling
- If all files are added successfully, delete the work folder and print "Deployment Complete".
- If any file fails to add, do not delete the work folder and print "Deployment Failed" along with the error information and the failed command.
Additional Notes
- All paths are fully resolved and printed before any processing begins.
- Original file casing is preserved in the disk image.
- The final disk image will overwrite any existing file with the same name.
- Failures in file addition are clearly reported along with the command used.