Monitor r7 with crc32: 93bd95db disasm completed.

This commit is contained in:
Роман Бойков 2026-02-19 19:13:56 +03:00
parent 1a2570d95f
commit 5dee7d555c
45 changed files with 19192 additions and 80 deletions

View File

@ -1,10 +0,0 @@
*.labels
*.obj
*.OBJ
*.bin
*.tmp
tmp/
build/
*.lst
*.sld

View File

@ -1,10 +0,0 @@
*.labels
*.obj
*.OBJ
*.bin
*.tmp
tmp/
build/
*.lst
*.sld

View File

@ -1,10 +0,0 @@
*.labels
*.obj
*.OBJ
*.bin
*.tmp
tmp/
build/
*.lst
*.sld

View File

@ -1,10 +0,0 @@
*.labels
*.obj
*.OBJ
*.bin
*.tmp
tmp/
build/
*.lst
*.sld

10
MON_Turbo/.gitignore vendored
View File

@ -1,10 +0,0 @@
*.labels
*.obj
*.OBJ
*.bin
*.tmp
tmp/
build/
*.lst
*.sld

View File

@ -139,6 +139,7 @@ i_fill_video:
; Beep
LD C, ASCII_BELL
CALL m_con_out
; check bios exists
LD A, (BIOS.boot_f)
CP JP_OPCODE
JP Z, BIOS.boot_f

View File

@ -0,0 +1,9 @@
{
"recommendations": [
"maziac.asm-code-lens",
"maziac.dezog",
"maziac.hex-hover-converter",
"maziac.z80-instruction-set",
"maziac.sna-fileviewer"
]
}

65
MON_r6_291f2b76/.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,65 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "make MONITOR (sjasmplus)",
"type": "shell",
"command": "sjasmplus",
"args": [
"--sld=monitor.sld",
"--sym=monitor.labels",
"--raw=monitor.obj",
"--fullpath",
"monitor.asm"
],
"problemMatcher": {
"owner": "sjasmplus",
"fileLocation": "autoDetect",
"pattern": {
"regexp": "^(.*)\\((\\d+)\\):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"severity": 3,
"message": 4
}
},
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "Optimize MONITOR (MDL)",
"type": "shell",
"command": "/opt/java21/bin/java -jar ~/Soft/MDL/mdl.jar monitor.asm -cpu z80 -so -dialect sjasmplus",
"group": "build",
"problemMatcher": {
"applyTo": "allDocuments",
"fileLocation": [
"autoDetect",
"${workspaceFolder}"
],
"pattern": [
{
"regexp": "^(\\w+): (.+) in (.+)#([0-9]+): (.+)$",
"file": 3,
"line": 4,
"severity": 1,
"message": 5,
"code": 2
}
]
},
"presentation": {
"echo": false,
"focus": false,
"panel": "dedicated",
"showReuseMessage": false,
"clear": true,
"revealProblems": "onProblem"
}
}
]
}

Binary file not shown.

15
MON_r6_291f2b76/README.md Normal file
View File

@ -0,0 +1,15 @@
# Ocean-240.2 ROM Monitor release 6
**CRC32 checksum**: 291f2b76
Source codes of Turbo Monitor r6 for Ocean-240.2 with Floppy controller.
In Z80 mnemonics, but limited for i8080 instruction set.
## Compile:
Code is located in memory at address: 0xE000..0xFFFF
sjasmplus --sld=monitor.sld --sym=monitor.labels --raw=monitor.obj --fullpath monitor.asm
To compile sources, use [sjasmplus Z80 assembler](https://github.com/z00m128/sjasmplus).

View File

@ -0,0 +1,41 @@
; =======================================================
; Ocean-240.2
; Definition of CPM BIOS entries to compile depended
; modules
;
; By Romych 2025-09-09
; ======================================================
IFNDEF _BIOS
DEFINE _BIOS
MODULE BIOS
boot_f EQU 0xD600
wboot_f EQU 0xD603
const_f EQU 0xD606
conin_f EQU 0xD609
conout_f EQU 0xD60C
list_f EQU 0xD60F
punch_f EQU 0xD612
reader_f EQU 0xD615
home_f EQU 0xD618
seldsk_f EQU 0xD61B
settrk_f EQU 0xD61E
setsec_f EQU 0xD621
setdma_f EQU 0xD624
read_f EQU 0xD627
write_f EQU 0xD62A
sectran_f EQU 0xD630
reserved_f1 EQU 0xD633
reserved_f2 EQU 0xD636
tape_read_f EQU 0xD639
tape_write_f EQU 0xD63C
tape_wait_f EQU 0xD63F
bios_var04 EQU 0xD64B
ENDMODULE
ENDIF

149
MON_r6_291f2b76/equates.inc Normal file
View File

@ -0,0 +1,149 @@
; ======================================================
; Ocean-240.2
; Equates for all assembly sources
;
; By Romych 2025-09-09
; ======================================================
IFNDEF _EQUATES
DEFINE _EQUATES
ADDLIST EQU 0x08
ASCII_BELL EQU 0x07 ; Make Beep
ASCII_BS EQU 0x08 ; Move cursor left (Back Space)
ASCII_TAB EQU 0x09 ; Move cursor right +8 pos
ASCII_LF EQU 0x0A ; Move cursor down (Line Feed)
ASCII_FF EQU 0x0C ; Move cursor to home (Form Feed)
ASCII_CR EQU 0x0D ; Move gursor to 1st pos (Cariage Return)
ASCII_CAN EQU 0x18 ; Move cursor right
ASCII_EM EQU 0x19 ; Move cursor up
ASCII_SUB EQU 0x1A ; CTRL-Z - end of text file marker
ASCII_ESC EQU 0x1B ;
ASCII_US EQU 0x1F ; Clear screen
ASCII_SP EQU 0x20
ASCII_DEL EQU 0x7F
; ------------------------------------------------------
BDOS_NFUNCS EQU 41
BELL_PIN EQU 0x08 ; DD67 Pin PC3 - "BELL"
; ------------------------------------------------------
CCP_COMMAND_SIZE EQU 5 ; max length of CCP command
CCP_COMMAND_COUNT EQU 3 ; Count of CCP commands
CCP_COMMAND_CNT EQU 6
CCP_COMMAND_LEN EQU 4
CCP_SRC_ADDR EQU 0xc000 ; Address of CCP resident part in ROM
CCP_DST_ADDR EQU 0xb200 ; Address of CCP resident part in RAM
CCP_SIZE EQU 0x809
CPM_VERSION EQU 0x22 ; Version of CP/M as byte nibbles '2.2'
CTRL EQU 0x5E ; ^
CTRL_C EQU 0x03 ; Warm boot
CTRL_H EQU 0x08 ; Backspace
CTRL_E EQU 0x05 ; Move to beginning of new line (Physical EOL)
CTRL_J EQU 0x0A ; LF - Line Feed
CTRL_M EQU 0x0D ; CR - Carriage Return
CTRL_P EQU 0x10 ; turn on/off printer
CTRL_R EQU 0x12 ; Repeat current cmd line
CTRL_S EQU 0x13 ; Temporary stop display data to console (aka DC3)
CTRL_U EQU 0x15 ; Cancel (erase) current cmd line
CTRL_X EQU 0x18 ; Cancel (erase) current cmd line
; ------------------------------------------------------
DBPLIST EQU 0x0F
DEF_DISK_A_SIZE EQU 0x3F
DEF_DISK_B_SIZE EQU 0x0168
DIR_BUFF_SIZE EQU 128
DSK_MAP EQU 0x10
DSK_MSK EQU 0x03
DSK_SHF EQU 0x02
DMA_BUFF_SIZE EQU 0x80
; ------------------------------------------------------
ENDDIR EQU 0xFFFF
ESC_CMD_END EQU 0x1A
;EXT_NUM EQU 12 ; Extent byte offset
; ------------------------------------------------------
FALSE EQU 0x00
FDC_DD80RB EQU 0x21
FDC_NOT_READY EQU 0x80
FDC_RESTORE_L EQU 0x08
FDC_SEEK_LV EQU 0x1C
FDC_RESTORE_UH_NV EQU 0x03 ; Restore Unload Head, No Verify, 15ms Rate
FILE_DELETED EQU 0xE5
FWF_MASK EQU 0x80 ; File Write Flag mask
; ---------------------------------------------------
; FCB Offsets
; ---------------------------------------------------
FCB_LEN EQU 32 ; length of FCB
FCB_SHF EQU 5
FN_LEN EQU 12 ; Length of filename in FCB
FCB_DR EQU 0 ; Drive. 0 for default, 1-16 for A-P
FCB_FN EQU 1 ; Fn - Filename, 7-bit ASCII. The top bits - attributes
FCB_FT EQU 9 ; Filetype, 7-bit ASCII.
; T1' to T3' have the following
; T1' - Read-Only
; T2' - System (hidden)
; T3' - Archive
FCB_EXT EQU 12 ; EX - Set this to 0 when opening a file and then leave it to
; CP/M. You can rewind a file by setting EX, RC, S2 and CR to 0.
FCB_S1 EQU 13 ; S1 - Reserved.
FCB_S2 EQU 14 ; S2 - Reserved. Bit 7 - wile write flag, [6:0] module number (Extent hi bits)
FCB_RC EQU 15 ; RC - Set this to 0 when opening a file and then leave it to CP/M.
FCB_AL EQU 16 ; AL - Image of the second half of the directory entry,
; containing the file's allocation (which disc blocks it owns).
FCB_CR EQU 32 ; CR - Current record within extent. It is usually best to set
; this to 0 immediately after a file has been opened and
; then ignore it.
FCB_RN EQU 33 ; Rn - Random access record number. A 16-bit (with R2 used for overflow)
; ------------------------------------------------------
JP_OPCODE EQU 0xC3
; ------------------------------------------------------
IRQ_0 EQU 0x01
IRQ_1 EQU 0x02
IRQ_2 EQU 0x04
;LP_IRQ EQU 0x08
KBD_IRQ EQU 0x02
KBD_ACK EQU 0x10
KEY_ALF EQU 0x0D
KEY_FIX EQU 0x15
; ------------------------------------------------------
LST_REC EQU 0x7F
; ------------------------------------------------------
MAX_EXT EQU 0x1F
MAX_MOD EQU 0x0F
;MOD_NUM EQU 0x0E
; ------------------------------------------------------
FCB_INFO_LEN EQU 15 ; length of FCB info bytes to match
;NXT_REC EQU 0x20
; ------------------------------------------------------
PIC_POLL_MODE EQU 0x0A
PORT_C4 EQU 0x10
PRINTER_ACK EQU 0x10
PRINTER_IRQ EQU 0x08
; ------------------------------------------------------
;RAN_REC EQU 0x21
;FCB_RC EQU 0x0F
RO_FILE EQU 0x09
ROM_CHIP_SIZE EQU 8192 ; ROM Size, used to limit monitor code size
RX_READY EQU 0x02
; ------------------------------------------------------
TAPE_D EQU 0x08
TAPE_P EQU 0x04
TIMER_IRQ EQU 0x10
TL_HIGH EQU 0x05
TL_LOW EQU 0x03
TL_MID EQU 0x04
TMR0_SQWAVE EQU 0x36
TRUE EQU 0xFF
TX_READY EQU 0x01
; ------------------------------------------------------
ENDIF

View File

@ -0,0 +1,165 @@
; 96 symbols 6x7, with codes 0x20..0x7f KOI-7 H0
m_font_cp0:
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ' ' - 0x20
DB 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x04 ; '!' - 0x21
DB 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00 ; '"' - 0x22
DB 0x0a, 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x0a ; '#' - 0x23
DB 0x04, 0x1e, 0x05, 0x0e, 0x14, 0x0f, 0x04 ; '$' - 0x24
DB 0x03, 0x13, 0x08, 0x04, 0x02, 0x19, 0x18 ; '%' - 0x25
DB 0x06, 0x09, 0x05, 0x02, 0x15, 0x09, 0x16 ; '&' - 0x26
DB 0x06, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 ; ' - 0x27
DB 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08 ; '(' - 0x28
DB 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x02 ; ')' - 0x29
DB 0x00, 0x0a, 0x04, 0x1f, 0x04, 0x0a, 0x00 ; '*' - 0x2a
DB 0x00, 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00 ; '+' - 0x2b
DB 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x02 ; ',' - 0x2c
DB 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 ; '-' - 0x2d
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06 ; '.' - 0x2e
DB 0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00 ; '/' - 0x2f
DB 0x0e, 0x11, 0x19, 0x15, 0x13, 0x11, 0x0e ; '0' - 0x30
DB 0x04, 0x06, 0x04, 0x04, 0x04, 0x04, 0x0e ; '1' - 0x31
DB 0x0e, 0x11, 0x10, 0x08, 0x04, 0x02, 0x1f ; '2' - 0x32
DB 0x1f, 0x08, 0x04, 0x08, 0x10, 0x11, 0x0e ; '3' - 0x33
DB 0x08, 0x0c, 0x0a, 0x09, 0x1f, 0x08, 0x08 ; '4' - 0x34
DB 0x1f, 0x01, 0x0f, 0x10, 0x10, 0x11, 0x0e ; '5' - 0x35
DB 0x0c, 0x02, 0x01, 0x0f, 0x11, 0x11, 0x0e ; '6' - 0x36
DB 0x1f, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02 ; '7' - 0x37
DB 0x0e, 0x11, 0x11, 0x0e, 0x11, 0x11, 0x0e ; '8' - 0x38
DB 0x0e, 0x11, 0x11, 0x1e, 0x10, 0x08, 0x06 ; '9' - 0x39
DB 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00 ; ':' - 0x3a
DB 0x00, 0x06, 0x06, 0x00, 0x06, 0x04, 0x02 ; ';' - 0x3b
DB 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08 ; '<' - 0x3c
DB 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00 ; '=' - 0x3d
DB 0x02, 0x04, 0x08, 0x10, 0x08, 0x04, 0x02 ; '>' - 0x3e
DB 0x0e, 0x11, 0x10, 0x08, 0x04, 0x00, 0x04 ; '?' - 0x3f
DB 0x0e, 0x11, 0x10, 0x16, 0x15, 0x15, 0x0e ; '@' - 0x40
DB 0x04, 0x0a, 0x11, 0x11, 0x1f, 0x11, 0x11 ; 'A' - 0x41
DB 0x0f, 0x11, 0x11, 0x0f, 0x11, 0x11, 0x0f ; 'B' - 0x42
DB 0x0e, 0x11, 0x01, 0x01, 0x01, 0x11, 0x0e ; 'C' - 0x43
DB 0x07, 0x09, 0x11, 0x11, 0x11, 0x09, 0x07 ; 'D' - 0x44
DB 0x1f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x1f ; 'E' - 0x45
DB 0x1f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x01 ; 'F' - 0x46
DB 0x0e, 0x11, 0x01, 0x1d, 0x11, 0x11, 0x1e ; 'G' - 0x47
DB 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 ; 'H' - 0x48
DB 0x0e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e ; 'I' - 0x49
DB 0x1c, 0x08, 0x08, 0x08, 0x08, 0x09, 0x06 ; 'J' - 0x4a
DB 0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11 ; 'K' - 0x4b
DB 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1f ; 'L' - 0x4c
DB 0x11, 0x1b, 0x15, 0x15, 0x11, 0x11, 0x11 ; 'M' - 0x4d
DB 0x11, 0x11, 0x13, 0x15, 0x19, 0x11, 0x11 ; 'N' - 0x4e
DB 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e ; 'O' - 0x4f
DB 0x0f, 0x11, 0x11, 0x0f, 0x01, 0x01, 0x01 ; 'P' - 0x50
DB 0x0e, 0x11, 0x11, 0x11, 0x15, 0x09, 0x16 ; 'Q' - 0x51
DB 0x0f, 0x11, 0x11, 0x0f, 0x05, 0x09, 0x11 ; 'R' - 0x52
DB 0x1e, 0x01, 0x01, 0x0e, 0x10, 0x10, 0x0f ; 'S' - 0x53
DB 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 ; 'T' - 0x54
DB 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e ; 'U' - 0x55
DB 0x11, 0x11, 0x11, 0x11, 0x0a, 0x0a, 0x04 ; 'V' - 0x56
DB 0x11, 0x11, 0x11, 0x15, 0x15, 0x15, 0x0a ; 'W' - 0x57
DB 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 ; 'X' - 0x58
DB 0x11, 0x11, 0x11, 0x0a, 0x04, 0x04, 0x04 ; 'Y' - 0x59
DB 0x1f, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1f ; 'Z' - 0x5a
DB 0x0e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0e ; '[' - 0x5b
DB 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00 ; '\' - 0x5c
DB 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0e ; ']' - 0x5d
DB 0x0e, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00 ; '^' - 0x5r
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f ; '_' - 0x5f
DB 0x1c, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 ; '`' - 0x60
DB 0x00, 0x00, 0x0e, 0x10, 0x1e, 0x13, 0x1e ; 'a' - 0x61
DB 0x01, 0x01, 0x0d, 0x13, 0x11, 0x11, 0x0f ; 'b' - 0x62
DB 0x00, 0x00, 0x0e, 0x01, 0x01, 0x01, 0x0e ; 'c' - 0x63
DB 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x1e ; 'd' - 0x64
DB 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x01, 0x0e ; 'e' - 0x65
DB 0x18, 0x04, 0x04, 0x0e, 0x04, 0x04, 0x04 ; 'f' - 0x66
DB 0x00, 0x0e, 0x11, 0x11, 0x1e, 0x10, 0x0e ; 'g' - 0x67
DB 0x01, 0x01, 0x0d, 0x13, 0x11, 0x11, 0x11 ; 'h' - 0x68
DB 0x04, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04 ; 'i' - 0x69
DB 0x08, 0x00, 0x08, 0x08, 0x08, 0x08, 0x06 ; 'j' - 0x6a
DB 0x01, 0x01, 0x09, 0x05, 0x03, 0x05, 0x09 ; 'k' - 0x6b
DB 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08 ; 'l' - 0x6c
DB 0x00, 0x00, 0x0f, 0x15, 0x15, 0x15, 0x15 ; 'm' - 0x6d
DB 0x00, 0x00, 0x09, 0x13, 0x11, 0x11, 0x11 ; 'n' - 0x6e
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e ; 'o' - 0x6f
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x0f, 0x01 ; 'p' - 0x70
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x1e, 0x10 ; 'q' - 0x71
DB 0x00, 0x00, 0x0d, 0x13, 0x01, 0x01, 0x01 ; 'r' - 0x72
DB 0x00, 0x00, 0x1e, 0x01, 0x0e, 0x10, 0x0f ; 's' - 0x73
DB 0x04, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x18 ; 't' - 0x74
DB 0x00, 0x00, 0x11, 0x11, 0x11, 0x19, 0x16 ; 'u' - 0x75
DB 0x00, 0x00, 0x11, 0x11, 0x0a, 0x0a, 0x04 ; 'v' - 0x76
DB 0x00, 0x00, 0x11, 0x15, 0x15, 0x15, 0x0a ; 'w' - 0x77
DB 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 ; 'x' - 0x78
DB 0x00, 0x00, 0x11, 0x11, 0x1e, 0x10, 0x0c ; 'y' - 0x79
DB 0x00, 0x00, 0x1f, 0x08, 0x04, 0x02, 0x1f ; 'z' - 0x7a
DB 0x10, 0x08, 0x04, 0x02, 0x04, 0x0a, 0x14 ; '{' - 0x7b
DB 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 ; '|' - 0x7c
DB 0x01, 0x02, 0x04, 0x08, 0x04, 0x0a, 0x05 ; '}' - 0x7d
DB 0x00, 0x02, 0x15, 0x0a, 0x15, 0x08, 0x00 ; '~' - 0x7e
DB 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15 ; [DEL] - 0x7f
; 64 symbols 6x7, with codes 0x40..0x7f KOI-7 H1
m_font_cp1:
DB 0x00, 0x00, 0x09, 0x15, 0x17, 0x15, 0x09 ; ю - 0x40
DB 0x00, 0x00, 0x06, 0x08, 0x0e, 0x09, 0x16 ; а - 0x41
DB 0x01, 0x06, 0x08, 0x0e, 0x09, 0x09, 0x06 ; б - 0x42
DB 0x00, 0x00, 0x09, 0x09, 0x09, 0x1f, 0x10 ; ц - 0x43
DB 0x00, 0x00, 0x0e, 0x0a, 0x0a, 0x1f, 0x11 ; д - 0x44
DB 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x01, 0x1e ; е - 0x45
DB 0x00, 0x04, 0x0e, 0x15, 0x15, 0x0e, 0x04 ; ф - 0x46
DB 0x00, 0x00, 0x0f, 0x09, 0x01, 0x01, 0x01 ; г - 0x47
DB 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 ; х - 0x48
DB 0x00, 0x00, 0x11, 0x19, 0x15, 0x13, 0x11 ; и - 0x49
DB 0x0a, 0x04, 0x11, 0x19, 0x15, 0x13, 0x11 ; й - 0x4a
DB 0x00, 0x00, 0x11, 0x09, 0x07, 0x09, 0x11 ; к - 0x4b
DB 0x00, 0x00, 0x1c, 0x12, 0x12, 0x12, 0x11 ; л - 0x4c
DB 0x00, 0x00, 0x11, 0x1b, 0x15, 0x11, 0x11 ; м - 0x4d
DB 0x00, 0x00, 0x11, 0x11, 0x1f, 0x11, 0x11 ; н - 0x4e
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e ; о - 0x4f
DB 0x00, 0x00, 0x1f, 0x11, 0x11, 0x11, 0x11 ; п - 0x50
DB 0x00, 0x00, 0x1e, 0x11, 0x1e, 0x14, 0x12 ; я - 0x51
DB 0x00, 0x00, 0x07, 0x09, 0x07, 0x01, 0x01 ; р - 0x52
DB 0x00, 0x00, 0x0e, 0x01, 0x01, 0x01, 0x0e ; с - 0x53
DB 0x00, 0x00, 0x1f, 0x04, 0x04, 0x04, 0x04 ; т - 0x54
DB 0x00, 0x00, 0x11, 0x11, 0x1e, 0x10, 0x0e ; у - 0x55
DB 0x00, 0x00, 0x15, 0x15, 0x0e, 0x15, 0x15 ; ж - 0x56
DB 0x00, 0x00, 0x03, 0x05, 0x07, 0x09, 0x07 ; в - 0x57
DB 0x00, 0x00, 0x01, 0x01, 0x07, 0x09, 0x07 ; ь - 0x58
DB 0x00, 0x00, 0x11, 0x11, 0x13, 0x15, 0x13 ; ы - 0x59
DB 0x00, 0x00, 0x0e, 0x11, 0x0c, 0x11, 0x0e ; з - 0x5a
DB 0x00, 0x00, 0x15, 0x15, 0x15, 0x15, 0x1f ; ш - 0x5b
DB 0x00, 0x00, 0x07, 0x08, 0x0e, 0x08, 0x07 ; э - 0x5c
DB 0x00, 0x00, 0x15, 0x15, 0x15, 0x1f, 0x10 ; щ - 0x5d
DB 0x00, 0x00, 0x09, 0x09, 0x0e, 0x08, 0x08 ; ч - 0x5e
DB 0x00, 0x00, 0x06, 0x05, 0x0c, 0x14, 0x0c ; ъ - 0x5f
DB 0x09, 0x15, 0x15, 0x17, 0x15, 0x15, 0x09 ; Ю - 0x60
DB 0x04, 0x0a, 0x11, 0x11, 0x1f, 0x11, 0x11 ; А - 0x61
DB 0x1f, 0x11, 0x01, 0x0f, 0x11, 0x11, 0x1f ; Б - 0x62
DB 0x09, 0x09, 0x09, 0x09, 0x09, 0x1f, 0x10 ; С - 0x63
DB 0x0c, 0x0a, 0x0a, 0x0a, 0x0a, 0x1f, 0x11 ; Д - 0x64
DB 0x1f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x1f ; Е - 0x65
DB 0x04, 0x0e, 0x15, 0x15, 0x15, 0x0e, 0x04 ; Ф - 0x66
DB 0x1f, 0x11, 0x01, 0x01, 0x01, 0x01, 0x01 ; Г - 0x67
DB 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 ; Х - 0x68
DB 0x11, 0x11, 0x19, 0x15, 0x13, 0x11, 0x11 ; И - 0x69
DB 0x04, 0x15, 0x11, 0x19, 0x15, 0x13, 0x11 ; Й - 0x6a
DB 0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11 ; К - 0x6b
DB 0x1c, 0x12, 0x12, 0x12, 0x12, 0x12, 0x11 ; Л - 0x6c
DB 0x11, 0x1b, 0x15, 0x15, 0x11, 0x11, 0x11 ; М - 0x6d
DB 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 ; Н - 0x6e
DB 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e ; О - 0x6f
DB 0x1f, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 ; П - 0x70
DB 0x1e, 0x11, 0x11, 0x11, 0x1e, 0x12, 0x11 ; Я - 0x71
DB 0x0f, 0x11, 0x11, 0x11, 0x0f, 0x01, 0x01 ; Р - 0x72
DB 0x0e, 0x11, 0x01, 0x01, 0x01, 0x11, 0x0e ; С - 0x73
DB 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 ; Т - 0x74
DB 0x11, 0x11, 0x11, 0x11, 0x1e, 0x10, 0x0e ; У - 0x75
DB 0x15, 0x15, 0x15, 0x0e, 0x15, 0x15, 0x15 ; Ж - 0x76
DB 0x0f, 0x11, 0x11, 0x0f, 0x11, 0x11, 0x0f ; В - 0x77
DB 0x01, 0x01, 0x01, 0x0f, 0x11, 0x11, 0x0f ; Ь - 0x78
DB 0x11, 0x11, 0x11, 0x13, 0x15, 0x15, 0x13 ; Ы - 0x79
DB 0x0e, 0x11, 0x10, 0x0c, 0x10, 0x11, 0x0e ; З - 0x7a
DB 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x1f ; Ш - 0x7b
DB 0x0e, 0x11, 0x10, 0x1c, 0x10, 0x11, 0x0e ; Э - 0x7c
DB 0x15, 0x15, 0x15, 0x15, 0x15, 0x1f, 0x10 ; Щ - 0x7d
DB 0x11, 0x11, 0x11, 0x1e, 0x10, 0x10, 0x10 ; Ч - 0x7e
DB 0x1f, 0x15, 0x1f, 0x15, 0x1f, 0x15, 0x1f ; [DEL] - 0x7f

132
MON_r6_291f2b76/io.inc Normal file
View File

@ -0,0 +1,132 @@
; =======================================================
; Ocean-240.2
; Computer with FDC variant.
; IO Ports definitions
;
; By Romych 2025-09-09
; =======================================================
IFNDEF _IO_PORTS
DEFINE _IO_PORTS
; -------------------------------------------------------
; КР580ВВ55 DD79
; -------------------------------------------------------
; Port A - User port A
USR_DD79PA EQU 0x00
; Port B - User port B
USR_DD79PB EQU 0x01
; Port C - User port C
USR_DD79PC EQU 0x02
; Config: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1]
USR_DD79CTR EQU 0x03
; -------------------------------------------------------
; КР1818ВГ93
; -------------------------------------------------------
; CMD
FDC_CMD EQU 0x20
; TRACK
FDC_TRACK EQU 0x21
; SECTOR
FDC_SECT EQU 0x22
; DATA
FDC_DATA EQU 0x23
;
FDC_WAIT EQU 0x24
; Controller port
FLOPPY EQU 0x25
; -------------------------------------------------------
; КР580ВВ55 DD78
; -------------------------------------------------------
; Port A - Keyboard Data
KBD_DD78PA EQU 0x40
; Port B - JST3,SHFT,CTRL,ACK,TAPE5,TAPE4,GK,GC
KBD_DD78PB EQU 0x41
; Port C - [PC7..0]
KBD_DD78PC EQU 0x42
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
KBD_DD78CTR EQU 0x43
; -------------------------------------------------------
; КР580ВИ53 DD70
; -------------------------------------------------------
; Counter 1
TMR_DD70C1 EQU 0x60
; Counter 2
TMR_DD70C2 EQU 0x61
; Counter 3
TMR_DD70C3 EQU 0x62
; Config: [sc1,sc0][rl1,rl0][m2,m1,m0][bcd]
; sc - timer, rl=01-LSB, 10-MSB, 11-LSB+MSB
; mode 000 - int on fin,
; 001 - one shot,
; x10 - rate gen,
; x11-sq wave
TMR_DD70CTR EQU 0x63
; Programable Interrupt controller PIC KR580VV59
PIC_DD75RS EQU 0x80
PIC_DD75RM EQU 0x81
; -------------------------------------------------------
; КР580ВВ51 DD72
; -------------------------------------------------------
; Data
UART_DD72RD EQU 0xA0
; [RST,RQ_RX,RST_ERR,PAUSE,RX_EN,RX_RDY,TX_RDY]
UART_DD72RR EQU 0xA1
; -------------------------------------------------------
; КР580ВВ55 DD17
; -------------------------------------------------------
; Port A - VShift[8..1]
SYS_DD17PA EQU 0xC0
; Port B - [ROM14,13][REST][ENROM-][A18,17,16][32k]
SYS_DD17PB EQU 0xC1
; Port C - HShift[HS5..1,SB3..1]
SYS_DD17PC EQU 0xC2
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
SYS_DD17CTR EQU 0xC3
; -------------------------------------------------------
; КР580ВВ55 DD67
; -------------------------------------------------------
; Port A - LPT Data
LPT_DD67PA EQU 0xE0
; Port B - [VSU,C/M,FL3..1,COL3..1]
VID_DD67PB EQU 0xE1
; Port C - [USER3..1,STB-LP,BELL,TAPE3..1]
DD67PC EQU 0xE2
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
DD67CTR EQU 0xE3
ENDIF

112
MON_r6_291f2b76/m_vars.inc Normal file
View File

@ -0,0 +1,112 @@
; =======================================================
; Ocean-240.2
; Module M_VARS - Monitor variables
; RAM Range: 0xBA09-0xBFFF
;
; Disassembled by Romych 2026-02-18
; =======================================================
IFNDEF _M_VARS
DEFINE _M_VARS
MODULE M_VARS
ORG 0xbf00
buffer:
DS 128 ; bf00
DS 64 ; bf80
stor_sp:
DS 14 ; bfc0
stack_2:
DS 2 ; bfce
stor_de:
stor_e:
DS 1 ; bfd0
stor_d
DS 1 ; bfd1
stor_bc:
stor_c:
DS 1 ; bfd2
stor_b:
DS 1 ; bfd3
DS 2 ; bfd4
stor_af:
stor_f:
DS 1 ; bfd6
stor_a:
DS 1 ; bfd7
stack_0:
DS 1 ; bfd8
stor_s:
DS 1 ; bfd9
store_hl
DS 1 ; bfda
stor_m
DS 1 ; bfdb
start_jp
DS 1 ; bfdc
store_pc:
DS 1 ; bfdd
stor_p:
DS 1 ; bfde
esc_mode:
DS 1 ; bfdf
esc_cmd:
DS 1 ; bfe0
esc_param_cnt:
DS 1 ; bfe1
esc_param:
DS 10 ; bfe2
screen_mode:
DS 1 ; bfec
cursor_row:
DS 1 ; bfed
cursor_col:
DS 1 ; bfee
curr_color:
DS 2 ; bfef
row_shift:
DS 1 ; bff1
codepage:
DS 1 ; bff2
cur_palette:
DS 1 ; bff3
beep_period:
DS 2 ; bff4
beep_duration:
DS 2 ; bff6
pix_shift:
DS 1 ; bff8
strobe_state:
DS 1 ; bff9
ul_var0:
DS 1 ; bffa
ul_var1:
DS 1 ; bffb
ul_var2:
DS 1 ; bffc
ul_var3:
DS 1 ; bffd
free_vars:
DS 1 ; bffe
DS 1 ; bfff
; ASSERT stack_top = 0xbfb8
; ASSERT stack = 0xbf00
; ASSERT hrg = 0xbf88
; ASSERT rst_hl_save = 0xbfc6
; ASSERT rst_ret_addr = 0xbfcb
; ASSERT stack_0 = 0xbfd2
; ASSERT esc_mode = 0xbfd9
; ASSERT screen_mode = 0xbfe6
; ASSERT mc_stored_key = 0xbffd
; DISPLAY " esc_mode is: ", esc_mode
; DISPLAY " esc_mode is: ", esc_mode
; DISPLAY " rst_ret_addr is: ", rst_ret_addr
; DISPLAY " tstack_top is: ", tstack_top
; DISPLAY " mc_stored_key is: ", mc_stored_key
ENDMODULE
ENDIF

View File

@ -0,0 +1,35 @@
; ======================================================
; Ocean-240.2
;
; Monitor r6 entries to compile CP/M modules
;
; By Romych 2026-02-18
; ======================================================
IFNDEF _MON_ENTRY
DEFINE _MON_ENTRY
MODULE MON_ENTRY
mon_init EQU 0xe000
mon_cold_start EQU 0xe003
mon_con_status EQU 0xe006
mon_con_in EQU 0xe009
mon_con_out EQU 0xe00c
mon_serial_in EQU 0xe00f
mpn_serial_out EQU 0xe012
mon_char_print EQU 0xe015
mon_tape_read EQU 0xe018
mon_tape_write EQU 0xe01b
mon_ram_disk_read EQU 0xe01e
mon_ram_disk_write EQU 0xe021
mon_res_f1 EQU 0xe024
mon_res_f2 EQU 0xe027
mon_tape_wait EQU 0xe02a
mon_tape_detect EQU 0xe02d
mon_read_floppy EQU 0xe030
mon_write_floppy EQU 0xe033
ENDMODULE
ENDIF

4933
MON_r6_291f2b76/monitor.asm Normal file

File diff suppressed because it is too large Load Diff

49
MON_r6_291f2b76/ram.inc Normal file
View File

@ -0,0 +1,49 @@
; =======================================================
; Ocean-240.2
;
; RAM area at address: 0x0000 - 0x0100, used by CP/M and
; HW-Monitor
; By Romych 2026-02-03
; =======================================================
IFNDEF _RAM
DEFINE _RAM
MODULE RAM
@warm_boot EQU 0x0000 ; Jump warm_boot (Restart)
@warm_boot_addr EQU 0x0001 ; address of warm boot entry point
@iobyte EQU 0x0003 ; Input/Output mapping
@cur_user_drv EQU 0x0004 ; [7:4] - curent user, [3:0] - current drive
@jp_bdos_enter EQU 0x0005 ; Jump bdos (CALL 5 to make CP/M requests)
@bdos_ent_addr EQU 0x0006 ; addres of BDOS entry point
@RST1 EQU 0x0008
@RST1_handler_addr EQU 0x0009
;RST2 EQU 0x0010
;RST3 EQU 0x0018
;RST4 EQU 0x0020
;RST5 EQU 0x0028
;RST6 EQU 0x0030
;RST7 EQU 0x0038
;reserve1 EQU 0x003b
@bios_var0 EQU 0x0040 ; 0xaa - bios init r8
@bios_var1 EQU 0x0041 ; 0xaa - bios init r8
@bios_var2 EQU 0x0042 ; 0x00 - bios init r8
@bios_var3 EQU 0x0043 ; 0xff - bios init r8
@interleave_0 EQU 0x0044
;reserve2 EQU 0x0050
@fcb1 EQU 0x005c ; Default FCB, 16 bytes
@fcb2 EQU 0x006c
;NMI_ISR EQU 0x0066
@dma_buffer EQU 0x0080 ; Default "DMA" 128 bytes buffer
@p_cmd_line_len EQU 0x0080 ; command line character count
@p_cmd_line EQU 0x0081 ; command line buffer
@fcb_ra_record_num EQU 0x00a1
@bios_stack EQU 0x0100
@tpa_start EQU 0x0100 ; start of program
@video_ram EQU 0x4000
ENDMODULE
ENDIF

View File

@ -1,10 +0,0 @@
*.labels
*.obj
*.OBJ
*.bin
*.tmp
tmp/
build/
*.lst
*.sld

View File

@ -1,10 +0,0 @@
*.labels
*.obj
*.OBJ
*.bin
*.tmp
tmp/
build/
*.lst
*.sld

View File

@ -0,0 +1,9 @@
{
"recommendations": [
"maziac.asm-code-lens",
"maziac.dezog",
"maziac.hex-hover-converter",
"maziac.z80-instruction-set",
"maziac.sna-fileviewer"
]
}

34
MON_r8_9c6c6546/.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,34 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "make MONITOR (sjasmplus)",
"type": "shell",
"command": "sjasmplus",
"args": [
"--sld=monitor.sld",
"--sym=monitor.labels",
"--raw=monitor.obj",
"--fullpath",
"monitor.asm"
],
"problemMatcher": {
"owner": "sjasmplus",
"fileLocation": "autoDetect",
"pattern": {
"regexp": "^(.*)\\((\\d+)\\):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"severity": 3,
"message": 4
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

Binary file not shown.

19
MON_r8_9c6c6546/README.md Normal file
View File

@ -0,0 +1,19 @@
# Ocean-240.2 ROM Monitor V8 checksum 9c6c6546
Source codes of Monitor v8 for Ocean-240.2 with Floppy controller.
In Z80 mnemonics, but limited for i8080 instruction set.
## Differences
1) Font. Other russian letters б and д;
2) Calculate values for extended ram access in procedures m_ramdisk_read, m_ramdisk_write.
3) Don't reset hi bit when read keyboard
4) Other params count at last esc commands
## Compile
Code is located in memory at address: 0xE000..0xFFFF
sjasmplus --sld=monitor.sld --sym=monitor.labels --raw=monitor.obj --fullpath monitor.asm
To compile sources, use [sjasmplus Z80 assembler](https://github.com/z00m128/sjasmplus).

View File

@ -0,0 +1,41 @@
; =======================================================
; Ocean-240.2
; Definition of CPM BIOS entries to compile depended
; modules
;
; By Romych 2025-09-09
; ======================================================
IFNDEF _BIOS
DEFINE _BIOS
MODULE BIOS
boot_f EQU 0xD600
wboot_f EQU 0xD603
const_f EQU 0xD606
conin_f EQU 0xD609
conout_f EQU 0xD60C
list_f EQU 0xD60F
punch_f EQU 0xD612
reader_f EQU 0xD615
home_f EQU 0xD618
seldsk_f EQU 0xD61B
settrk_f EQU 0xD61E
setsec_f EQU 0xD621
setdma_f EQU 0xD624
read_f EQU 0xD627
write_f EQU 0xD62A
sectran_f EQU 0xD630
reserved_f1 EQU 0xD633
reserved_f2 EQU 0xD636
tape_read_f EQU 0xD639
tape_write_f EQU 0xD63C
tape_wait_f EQU 0xD63F
bios_var04 EQU 0xD64B
ENDMODULE
ENDIF

149
MON_r8_9c6c6546/equates.inc Normal file
View File

@ -0,0 +1,149 @@
; ======================================================
; Ocean-240.2
; Equates for all assembly sources
;
; By Romych 2025-09-09
; ======================================================
IFNDEF _EQUATES
DEFINE _EQUATES
ADDLIST EQU 0x08
ASCII_BELL EQU 0x07 ; Make Beep
ASCII_BS EQU 0x08 ; Move cursor left (Back Space)
ASCII_TAB EQU 0x09 ; Move cursor right +8 pos
ASCII_LF EQU 0x0A ; Move cursor down (Line Feed)
ASCII_FF EQU 0x0C ; Move cursor to home (Form Feed)
ASCII_CR EQU 0x0D ; Move gursor to 1st pos (Cariage Return)
ASCII_CAN EQU 0x18 ; Move cursor right
ASCII_EM EQU 0x19 ; Move cursor up
ASCII_SUB EQU 0x1A ; CTRL-Z - end of text file marker
ASCII_ESC EQU 0x1B ;
ASCII_US EQU 0x1F ; Clear screen
ASCII_SP EQU 0x20
ASCII_DEL EQU 0x7F
; ------------------------------------------------------
BDOS_NFUNCS EQU 41
BELL_PIN EQU 0x08 ; DD67 Pin PC3 - "BELL"
; ------------------------------------------------------
CCP_COMMAND_SIZE EQU 5 ; max length of CCP command
CCP_COMMAND_COUNT EQU 3 ; Count of CCP commands
CCP_COMMAND_CNT EQU 6
CCP_COMMAND_LEN EQU 4
CCP_SRC_ADDR EQU 0xc000 ; Address of CCP resident part in ROM
CCP_DST_ADDR EQU 0xb200 ; Address of CCP resident part in RAM
CCP_SIZE EQU 0x809
CPM_VERSION EQU 0x22 ; Version of CP/M as byte nibbles '2.2'
CTRL EQU 0x5E ; ^
CTRL_C EQU 0x03 ; Warm boot
CTRL_H EQU 0x08 ; Backspace
CTRL_E EQU 0x05 ; Move to beginning of new line (Physical EOL)
CTRL_J EQU 0x0A ; LF - Line Feed
CTRL_M EQU 0x0D ; CR - Carriage Return
CTRL_P EQU 0x10 ; turn on/off printer
CTRL_R EQU 0x12 ; Repeat current cmd line
CTRL_S EQU 0x13 ; Temporary stop display data to console (aka DC3)
CTRL_U EQU 0x15 ; Cancel (erase) current cmd line
CTRL_X EQU 0x18 ; Cancel (erase) current cmd line
; ------------------------------------------------------
DBPLIST EQU 0x0F
DEF_DISK_A_SIZE EQU 0x3F
DEF_DISK_B_SIZE EQU 0x0168
DIR_BUFF_SIZE EQU 128
DSK_MAP EQU 0x10
DSK_MSK EQU 0x03
DSK_SHF EQU 0x02
DMA_BUFF_SIZE EQU 0x80
; ------------------------------------------------------
ENDDIR EQU 0xFFFF
ESC_CMD_END EQU 0x1A
;EXT_NUM EQU 12 ; Extent byte offset
; ------------------------------------------------------
FALSE EQU 0x00
FDC_DD80RB EQU 0x21
FDC_NOT_READY EQU 0x80
FDC_RESTORE_L EQU 0x08
FDC_SEEK_LV EQU 0x1C
FDC_RESTORE_UH_NV EQU 0x03 ; Restore Unload Head, No Verify, 15ms Rate
FILE_DELETED EQU 0xE5
FWF_MASK EQU 0x80 ; File Write Flag mask
; ---------------------------------------------------
; FCB Offsets
; ---------------------------------------------------
FCB_LEN EQU 32 ; length of FCB
FCB_SHF EQU 5
FN_LEN EQU 12 ; Length of filename in FCB
FCB_DR EQU 0 ; Drive. 0 for default, 1-16 for A-P
FCB_FN EQU 1 ; Fn - Filename, 7-bit ASCII. The top bits - attributes
FCB_FT EQU 9 ; Filetype, 7-bit ASCII.
; T1' to T3' have the following
; T1' - Read-Only
; T2' - System (hidden)
; T3' - Archive
FCB_EXT EQU 12 ; EX - Set this to 0 when opening a file and then leave it to
; CP/M. You can rewind a file by setting EX, RC, S2 and CR to 0.
FCB_S1 EQU 13 ; S1 - Reserved.
FCB_S2 EQU 14 ; S2 - Reserved. Bit 7 - wile write flag, [6:0] module number (Extent hi bits)
FCB_RC EQU 15 ; RC - Set this to 0 when opening a file and then leave it to CP/M.
FCB_AL EQU 16 ; AL - Image of the second half of the directory entry,
; containing the file's allocation (which disc blocks it owns).
FCB_CR EQU 32 ; CR - Current record within extent. It is usually best to set
; this to 0 immediately after a file has been opened and
; then ignore it.
FCB_RN EQU 33 ; Rn - Random access record number. A 16-bit (with R2 used for overflow)
; ------------------------------------------------------
JP_OPCODE EQU 0xC3
; ------------------------------------------------------
IRQ_0 EQU 0x01
IRQ_1 EQU 0x02
IRQ_2 EQU 0x04
;LP_IRQ EQU 0x08
KBD_IRQ EQU 0x02
KBD_ACK EQU 0x10
KEY_ALF EQU 0x0D
KEY_FIX EQU 0x15
; ------------------------------------------------------
LST_REC EQU 0x7F
; ------------------------------------------------------
MAX_EXT EQU 0x1F
MAX_MOD EQU 0x0F
;MOD_NUM EQU 0x0E
; ------------------------------------------------------
FCB_INFO_LEN EQU 15 ; length of FCB info bytes to match
;NXT_REC EQU 0x20
; ------------------------------------------------------
PIC_POLL_MODE EQU 0x0A
PORT_C4 EQU 0x10
PRINTER_ACK EQU 0x10
PRINTER_IRQ EQU 0x08
; ------------------------------------------------------
;RAN_REC EQU 0x21
;FCB_RC EQU 0x0F
RO_FILE EQU 0x09
ROM_CHIP_SIZE EQU 8192 ; ROM Size, used to limit monitor code size
RX_READY EQU 0x02
; ------------------------------------------------------
TAPE_D EQU 0x08
TAPE_P EQU 0x04
TIMER_IRQ EQU 0x10
TL_HIGH EQU 0x05
TL_LOW EQU 0x03
TL_MID EQU 0x04
TMR0_SQWAVE EQU 0x36
TRUE EQU 0xFF
TX_READY EQU 0x01
; ------------------------------------------------------
ENDIF

View File

@ -0,0 +1,165 @@
; 96 symbols 6x7, with codes 0x20..0x7f KOI-7 H0
m_font_cp0:
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ' ' - 0x20
DB 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x04 ; '!' - 0x21
DB 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00 ; '"' - 0x22
DB 0x0a, 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x0a ; '#' - 0x23
DB 0x04, 0x1e, 0x05, 0x0e, 0x14, 0x0f, 0x04 ; '$' - 0x24
DB 0x03, 0x13, 0x08, 0x04, 0x02, 0x19, 0x18 ; '%' - 0x25
DB 0x06, 0x09, 0x05, 0x02, 0x15, 0x09, 0x16 ; '&' - 0x26
DB 0x06, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 ; ' - 0x27
DB 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08 ; '(' - 0x28
DB 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x02 ; ')' - 0x29
DB 0x00, 0x0a, 0x04, 0x1f, 0x04, 0x0a, 0x00 ; '*' - 0x2a
DB 0x00, 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00 ; '+' - 0x2b
DB 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x02 ; ',' - 0x2c
DB 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 ; '-' - 0x2d
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06 ; '.' - 0x2e
DB 0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00 ; '/' - 0x2f
DB 0x0e, 0x11, 0x19, 0x15, 0x13, 0x11, 0x0e ; '0' - 0x30
DB 0x04, 0x06, 0x04, 0x04, 0x04, 0x04, 0x0e ; '1' - 0x31
DB 0x0e, 0x11, 0x10, 0x08, 0x04, 0x02, 0x1f ; '2' - 0x32
DB 0x1f, 0x08, 0x04, 0x08, 0x10, 0x11, 0x0e ; '3' - 0x33
DB 0x08, 0x0c, 0x0a, 0x09, 0x1f, 0x08, 0x08 ; '4' - 0x34
DB 0x1f, 0x01, 0x0f, 0x10, 0x10, 0x11, 0x0e ; '5' - 0x35
DB 0x0c, 0x02, 0x01, 0x0f, 0x11, 0x11, 0x0e ; '6' - 0x36
DB 0x1f, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02 ; '7' - 0x37
DB 0x0e, 0x11, 0x11, 0x0e, 0x11, 0x11, 0x0e ; '8' - 0x38
DB 0x0e, 0x11, 0x11, 0x1e, 0x10, 0x08, 0x06 ; '9' - 0x39
DB 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00 ; ':' - 0x3a
DB 0x00, 0x06, 0x06, 0x00, 0x06, 0x04, 0x02 ; ';' - 0x3b
DB 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08 ; '<' - 0x3c
DB 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00 ; '=' - 0x3d
DB 0x02, 0x04, 0x08, 0x10, 0x08, 0x04, 0x02 ; '>' - 0x3e
DB 0x0e, 0x11, 0x10, 0x08, 0x04, 0x00, 0x04 ; '?' - 0x3f
DB 0x0e, 0x11, 0x10, 0x16, 0x15, 0x15, 0x0e ; '@' - 0x40
DB 0x04, 0x0a, 0x11, 0x11, 0x1f, 0x11, 0x11 ; 'A' - 0x41
DB 0x0f, 0x11, 0x11, 0x0f, 0x11, 0x11, 0x0f ; 'B' - 0x42
DB 0x0e, 0x11, 0x01, 0x01, 0x01, 0x11, 0x0e ; 'C' - 0x43
DB 0x07, 0x09, 0x11, 0x11, 0x11, 0x09, 0x07 ; 'D' - 0x44
DB 0x1f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x1f ; 'E' - 0x45
DB 0x1f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x01 ; 'F' - 0x46
DB 0x0e, 0x11, 0x01, 0x1d, 0x11, 0x11, 0x1e ; 'G' - 0x47
DB 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 ; 'H' - 0x48
DB 0x0e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e ; 'I' - 0x49
DB 0x1c, 0x08, 0x08, 0x08, 0x08, 0x09, 0x06 ; 'J' - 0x4a
DB 0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11 ; 'K' - 0x4b
DB 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1f ; 'L' - 0x4c
DB 0x11, 0x1b, 0x15, 0x15, 0x11, 0x11, 0x11 ; 'M' - 0x4d
DB 0x11, 0x11, 0x13, 0x15, 0x19, 0x11, 0x11 ; 'N' - 0x4e
DB 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e ; 'O' - 0x4f
DB 0x0f, 0x11, 0x11, 0x0f, 0x01, 0x01, 0x01 ; 'P' - 0x50
DB 0x0e, 0x11, 0x11, 0x11, 0x15, 0x09, 0x16 ; 'Q' - 0x51
DB 0x0f, 0x11, 0x11, 0x0f, 0x05, 0x09, 0x11 ; 'R' - 0x52
DB 0x1e, 0x01, 0x01, 0x0e, 0x10, 0x10, 0x0f ; 'S' - 0x53
DB 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 ; 'T' - 0x54
DB 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e ; 'U' - 0x55
DB 0x11, 0x11, 0x11, 0x11, 0x0a, 0x0a, 0x04 ; 'V' - 0x56
DB 0x11, 0x11, 0x11, 0x15, 0x15, 0x15, 0x0a ; 'W' - 0x57
DB 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 ; 'X' - 0x58
DB 0x11, 0x11, 0x11, 0x0a, 0x04, 0x04, 0x04 ; 'Y' - 0x59
DB 0x1f, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1f ; 'Z' - 0x5a
DB 0x0e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0e ; '[' - 0x5b
DB 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00 ; '\' - 0x5c
DB 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0e ; ']' - 0x5d
DB 0x0e, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00 ; '^' - 0x5r
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f ; '_' - 0x5f
DB 0x1c, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 ; '`' - 0x60
DB 0x00, 0x00, 0x0e, 0x10, 0x1e, 0x13, 0x1e ; 'a' - 0x61
DB 0x01, 0x01, 0x0d, 0x13, 0x11, 0x11, 0x0f ; 'b' - 0x62
DB 0x00, 0x00, 0x0e, 0x01, 0x01, 0x01, 0x0e ; 'c' - 0x63
DB 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x1e ; 'd' - 0x64
DB 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x01, 0x0e ; 'e' - 0x65
DB 0x18, 0x04, 0x04, 0x0e, 0x04, 0x04, 0x04 ; 'f' - 0x66
DB 0x00, 0x0e, 0x11, 0x11, 0x1e, 0x10, 0x0e ; 'g' - 0x67
DB 0x01, 0x01, 0x0d, 0x13, 0x11, 0x11, 0x11 ; 'h' - 0x68
DB 0x04, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04 ; 'i' - 0x69
DB 0x08, 0x00, 0x08, 0x08, 0x08, 0x08, 0x06 ; 'j' - 0x6a
DB 0x01, 0x01, 0x09, 0x05, 0x03, 0x05, 0x09 ; 'k' - 0x6b
DB 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08 ; 'l' - 0x6c
DB 0x00, 0x00, 0x0f, 0x15, 0x15, 0x15, 0x15 ; 'm' - 0x6d
DB 0x00, 0x00, 0x09, 0x13, 0x11, 0x11, 0x11 ; 'n' - 0x6e
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e ; 'o' - 0x6f
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x0f, 0x01 ; 'p' - 0x70
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x1e, 0x10 ; 'q' - 0x71
DB 0x00, 0x00, 0x0d, 0x13, 0x01, 0x01, 0x01 ; 'r' - 0x72
DB 0x00, 0x00, 0x1e, 0x01, 0x0e, 0x10, 0x0f ; 's' - 0x73
DB 0x04, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x18 ; 't' - 0x74
DB 0x00, 0x00, 0x11, 0x11, 0x11, 0x19, 0x16 ; 'u' - 0x75
DB 0x00, 0x00, 0x11, 0x11, 0x0a, 0x0a, 0x04 ; 'v' - 0x76
DB 0x00, 0x00, 0x11, 0x15, 0x15, 0x15, 0x0a ; 'w' - 0x77
DB 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 ; 'x' - 0x78
DB 0x00, 0x00, 0x11, 0x11, 0x1e, 0x10, 0x0c ; 'y' - 0x79
DB 0x00, 0x00, 0x1f, 0x08, 0x04, 0x02, 0x1f ; 'z' - 0x7a
DB 0x0c, 0x02, 0x02, 0x01, 0x02, 0x02, 0x0c ; '{' - 0x7b
DB 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 ; '|' - 0x7c
DB 0x03, 0x04, 0x04, 0x08, 0x04, 0x04, 0x03 ; '}' - 0x7d
DB 0x00, 0x02, 0x15, 0x0a, 0x15, 0x08, 0x00 ; '~' - 0x7e
DB 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15 ; [DEL] - 0x7f
; 64 symbols 6x7, with codes 0x40..0x7f KOI-7 H1
m_font_cp1:
DB 0x00, 0x00, 0x09, 0x15, 0x17, 0x15, 0x09 ; ю - 0x40
DB 0x00, 0x00, 0x06, 0x08, 0x0e, 0x09, 0x16 ; а - 0x41
DB 0x07, 0x02, 0x04, 0x0e, 0x09, 0x09, 0x06 ; б - 0x42 DIFF
DB 0x00, 0x00, 0x09, 0x09, 0x09, 0x1f, 0x10 ; ц - 0x43
DB 0x03, 0x04, 0x08, 0x0e, 0x09, 0x09, 0x06 ; д - 0x44 DIFF
DB 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x01, 0x1e ; е - 0x45
DB 0x00, 0x04, 0x0e, 0x15, 0x15, 0x0e, 0x04 ; ф - 0x46
DB 0x00, 0x00, 0x0f, 0x09, 0x01, 0x01, 0x01 ; г - 0x47
DB 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 ; х - 0x48
DB 0x00, 0x00, 0x11, 0x19, 0x15, 0x13, 0x11 ; и - 0x49
DB 0x0a, 0x04, 0x11, 0x19, 0x15, 0x13, 0x11 ; й - 0x4a
DB 0x00, 0x00, 0x11, 0x09, 0x07, 0x09, 0x11 ; к - 0x4b
DB 0x00, 0x00, 0x1c, 0x12, 0x12, 0x12, 0x11 ; л - 0x4c
DB 0x00, 0x00, 0x11, 0x1b, 0x15, 0x11, 0x11 ; м - 0x4d
DB 0x00, 0x00, 0x11, 0x11, 0x1f, 0x11, 0x11 ; н - 0x4e
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e ; о - 0x4f
DB 0x00, 0x00, 0x1f, 0x11, 0x11, 0x11, 0x11 ; п - 0x50
DB 0x00, 0x00, 0x1e, 0x11, 0x1e, 0x14, 0x12 ; я - 0x51
DB 0x00, 0x00, 0x07, 0x09, 0x07, 0x01, 0x01 ; р - 0x52
DB 0x00, 0x00, 0x0e, 0x01, 0x01, 0x01, 0x0e ; с - 0x53
DB 0x00, 0x00, 0x1f, 0x04, 0x04, 0x04, 0x04 ; т - 0x54
DB 0x00, 0x00, 0x11, 0x11, 0x1e, 0x10, 0x0e ; у - 0x55
DB 0x00, 0x00, 0x15, 0x15, 0x0e, 0x15, 0x15 ; ж - 0x56
DB 0x00, 0x00, 0x03, 0x05, 0x07, 0x09, 0x07 ; в - 0x57
DB 0x00, 0x00, 0x01, 0x01, 0x07, 0x09, 0x07 ; ь - 0x58
DB 0x00, 0x00, 0x11, 0x11, 0x13, 0x15, 0x13 ; ы - 0x59
DB 0x00, 0x00, 0x0e, 0x11, 0x0c, 0x11, 0x0e ; з - 0x5a
DB 0x00, 0x00, 0x15, 0x15, 0x15, 0x15, 0x1f ; ш - 0x5b
DB 0x00, 0x00, 0x07, 0x08, 0x0e, 0x08, 0x07 ; э - 0x5c
DB 0x00, 0x00, 0x15, 0x15, 0x15, 0x1f, 0x10 ; щ - 0x5d
DB 0x00, 0x00, 0x09, 0x09, 0x0e, 0x08, 0x08 ; ч - 0x5e
DB 0x00, 0x00, 0x06, 0x05, 0x0c, 0x14, 0x0c ; ъ - 0x5f
DB 0x09, 0x15, 0x15, 0x17, 0x15, 0x15, 0x09 ; Ю - 0x60
DB 0x04, 0x0a, 0x11, 0x11, 0x1f, 0x11, 0x11 ; А - 0x61
DB 0x1f, 0x11, 0x01, 0x0f, 0x11, 0x11, 0x1f ; Б - 0x62
DB 0x09, 0x09, 0x09, 0x09, 0x09, 0x1f, 0x10 ; С - 0x63
DB 0x0c, 0x0a, 0x0a, 0x0a, 0x0a, 0x1f, 0x11 ; Д - 0x64
DB 0x1f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x1f ; Е - 0x65
DB 0x04, 0x0e, 0x15, 0x15, 0x15, 0x0e, 0x04 ; Ф - 0x66
DB 0x1f, 0x11, 0x01, 0x01, 0x01, 0x01, 0x01 ; Г - 0x67
DB 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 ; Х - 0x68
DB 0x11, 0x11, 0x19, 0x15, 0x13, 0x11, 0x11 ; И - 0x69
DB 0x04, 0x15, 0x11, 0x19, 0x15, 0x13, 0x11 ; Й - 0x6a
DB 0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11 ; К - 0x6b
DB 0x1c, 0x12, 0x12, 0x12, 0x12, 0x12, 0x11 ; Л - 0x6c
DB 0x11, 0x1b, 0x15, 0x15, 0x11, 0x11, 0x11 ; М - 0x6d
DB 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 ; Н - 0x6e
DB 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e ; О - 0x6f
DB 0x1f, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 ; П - 0x70
DB 0x1e, 0x11, 0x11, 0x11, 0x1e, 0x12, 0x11 ; Я - 0x71
DB 0x0f, 0x11, 0x11, 0x11, 0x0f, 0x01, 0x01 ; Р - 0x72
DB 0x0e, 0x11, 0x01, 0x01, 0x01, 0x11, 0x0e ; С - 0x73
DB 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 ; Т - 0x74
DB 0x11, 0x11, 0x11, 0x11, 0x1e, 0x10, 0x0e ; У - 0x75
DB 0x15, 0x15, 0x15, 0x0e, 0x15, 0x15, 0x15 ; Ж - 0x76
DB 0x0f, 0x11, 0x11, 0x0f, 0x11, 0x11, 0x0f ; В - 0x77
DB 0x01, 0x01, 0x01, 0x0f, 0x11, 0x11, 0x0f ; Ь - 0x78
DB 0x11, 0x11, 0x11, 0x13, 0x15, 0x15, 0x13 ; Ы - 0x79
DB 0x0e, 0x11, 0x10, 0x0c, 0x10, 0x11, 0x0e ; З - 0x7a
DB 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x1f ; Ш - 0x7b
DB 0x0e, 0x11, 0x10, 0x1c, 0x10, 0x11, 0x0e ; Э - 0x7c
DB 0x15, 0x15, 0x15, 0x15, 0x15, 0x1f, 0x10 ; Щ - 0x7d
DB 0x11, 0x11, 0x11, 0x1e, 0x10, 0x10, 0x10 ; Ч - 0x7e
DB 0x1f, 0x15, 0x1f, 0x15, 0x1f, 0x15, 0x1f ; [DEL] - 0x7f

132
MON_r8_9c6c6546/io.inc Normal file
View File

@ -0,0 +1,132 @@
; =======================================================
; Ocean-240.2
; Computer with FDC variant.
; IO Ports definitions
;
; By Romych 2025-09-09
; =======================================================
IFNDEF _IO_PORTS
DEFINE _IO_PORTS
; -------------------------------------------------------
; КР580ВВ55 DD79
; -------------------------------------------------------
; Port A - User port A
USR_DD79PA EQU 0x00
; Port B - User port B
USR_DD79PB EQU 0x01
; Port C - User port C
USR_DD79PC EQU 0x02
; Config: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1]
USR_DD79CTR EQU 0x03
; -------------------------------------------------------
; КР1818ВГ93
; -------------------------------------------------------
; CMD
FDC_CMD EQU 0x20
; TRACK
FDC_TRACK EQU 0x21
; SECTOR
FDC_SECT EQU 0x22
; DATA
FDC_DATA EQU 0x23
;
FDC_WAIT EQU 0x24
; Controller port
FLOPPY EQU 0x25
; -------------------------------------------------------
; КР580ВВ55 DD78
; -------------------------------------------------------
; Port A - Keyboard Data
KBD_DD78PA EQU 0x40
; Port B - JST3,SHFT,CTRL,ACK,TAPE5,TAPE4,GK,GC
KBD_DD78PB EQU 0x41
; Port C - [PC7..0]
KBD_DD78PC EQU 0x42
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
KBD_DD78CTR EQU 0x43
; -------------------------------------------------------
; КР580ВИ53 DD70
; -------------------------------------------------------
; Counter 1
TMR_DD70C1 EQU 0x60
; Counter 2
TMR_DD70C2 EQU 0x61
; Counter 3
TMR_DD70C3 EQU 0x62
; Config: [sc1,sc0][rl1,rl0][m2,m1,m0][bcd]
; sc - timer, rl=01-LSB, 10-MSB, 11-LSB+MSB
; mode 000 - int on fin,
; 001 - one shot,
; x10 - rate gen,
; x11-sq wave
TMR_DD70CTR EQU 0x63
; Programable Interrupt controller PIC KR580VV59
PIC_DD75RS EQU 0x80
PIC_DD75RM EQU 0x81
; -------------------------------------------------------
; КР580ВВ51 DD72
; -------------------------------------------------------
; Data
UART_DD72RD EQU 0xA0
; [RST,RQ_RX,RST_ERR,PAUSE,RX_EN,RX_RDY,TX_RDY]
UART_DD72RR EQU 0xA1
; -------------------------------------------------------
; КР580ВВ55 DD17
; -------------------------------------------------------
; Port A - VShift[8..1]
SYS_DD17PA EQU 0xC0
; Port B - [ROM14,13][REST][ENROM-][A18,17,16][32k]
SYS_DD17PB EQU 0xC1
; Port C - HShift[HS5..1,SB3..1]
SYS_DD17PC EQU 0xC2
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
SYS_DD17CTR EQU 0xC3
; -------------------------------------------------------
; КР580ВВ55 DD67
; -------------------------------------------------------
; Port A - LPT Data
LPT_DD67PA EQU 0xE0
; Port B - [VSU,C/M,FL3..1,COL3..1]
VID_DD67PB EQU 0xE1
; Port C - [USER3..1,STB-LP,BELL,TAPE3..1]
DD67PC EQU 0xE2
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
DD67CTR EQU 0xE3
ENDIF

101
MON_r8_9c6c6546/m_vars.inc Normal file
View File

@ -0,0 +1,101 @@
; =======================================================
; Ocean-240.2
; Module M_VARS - Monitor variables
; RAM Range: 0xBA09-0xBFFF
;
; Disassembled by Romych 2025-02-05
; =======================================================
IFNDEF _M_VARS
DEFINE _M_VARS
MODULE M_VARS
ORG 0xbf00
buffer DS 128 ; 0xbf00 search text or buffer to search?
DS 36
paint_stack EQU $ ; 0xbfa4
DS 32
stack1: EQU $ ; 0xbfc4
DS 1
paint_var1 DS 1 ; 0xbfc5
paint_var2 DS 1 ; 0xbfc6
paint_var3 DS 1 ; 0xbfc7
paint_var4 DS 1 ; 0xbfc8
paint_var5 DS 1 ; 0xbfc9
paint_y DS 1 ; 0xbfca
paint_var7 DS 1 ; 0xbfcb
cmp_color DS 1 ; 0xbfcc
paint_sp_save DS 2
; Right pixel mask ex: 11111000
pixel_mask_r DS 1 ; 0xbfcf
tmp_color DS 1 ; 0xbfd0
rect_var2 DS 1 ; 0xbfd1
stack_0 EQU $
rect_var3 DS 1 ; 0xbfd2
esc_mode DS 1 ; 0xbfd3
esc_cmd DS 1 ; 0xbfd4
esc_param_cnt DS 1 ; 0xbfd5
esc_param DS 7 ; 0xbfd6
; Left inverse pixel mask ex: 00011111
pixel_mask_l_i DS 1
; Right inverse pixel mask ex: 00011111
pixel_mask_r_i DS 1
; Left pixel mask ex: 11100000
pixel_mask_l DS 1
; Current screen mode, bit 3 - hide/show cursor, bit 4 - only 20 rows
screen_mode DS 1 ; 0xbfe0
cursor_row DS 1 ; 0xbfe1 Cursor Y position
cursor_col DS 1 ; 0xbfe2 Cursor X position
curr_color DS 2 ; 0xbfe3 Current color low and hi bytes
esc_hex_cmd:
row_shift DS 1 ; 0xbfe5
codepage DS 1 ; 0xbfe6
cur_palette DS 1 ; 0xbfe7 00bbbfff - background and foreground colors
beep_period DS 2 ; 0xbfe8
beep_duration DS 2 ; 0xbfea
pix_shift DS 1 ; 0xbfec
strobe_state DS 1 ; 0xbfed
ul_var0 DS 1 ; 0xbfee
ul_A_var1 DS 1 ; 0xbfef
ul_B_var2 DS 1 ; 0xbff0
ul_var3 DS 1 ; 0xbff1
ul_A_var4 DS 1 ; 0xbff2
ul_B_var5 DS 1 ; 0xbff3
ul_var6 DS 1 ; 0xbff4
esc_var0 DS 1 ; 0xbff5
esc_var1 DS 1 ; 0xbff6
esc_var2 DS 1 ; 0xbff7
esc_var3 DS 1 ; 0xbff8
DS 1 ; 0xbff9
DS 1 ; 0xbffa
DS 1 ; 0xbffb
DS 1 ; 0xbffc
DS 1 ; 0xbffd
DS 1 ; 0xbffe
DS 1 ; 0xbfff
ASSERT stack1 = 0xbfc4
ASSERT buffer = 0xbf00
ASSERT paint_var1 = 0xbfc5
ASSERT pixel_mask_r = 0xbfcf
ASSERT stack_0 = 0xbfd2
ASSERT esc_mode = 0xbfd3
ASSERT screen_mode = 0xbfe0
ASSERT cur_palette = 0xbfe7
ASSERT ul_var0 = 0xbfee
ASSERT paint_stack = 0xbfa4
ASSERT esc_var3 = 0xbff8
;DISPLAY "screen_mode: ", /H, screen_mode
;DISPLAY "fn48_var1: ", /H, fn48_var1
ENDMODULE
ENDIF

View File

@ -0,0 +1,449 @@
MONITOR.mon_start 0xe000 f
MONITOR.mon_hexb 0xe003 f
MONITOR.non_con_status 0xe006 f
MONITOR.mon_con_in 0xe009 f
MONITOR.mon_con_out 0xe00c f
MONITOR.mon_serial_in 0xe00f f
MONITOR.mon_serial_out 0xe012 f
MONITOR.mon_char_print 0xe015 f
MONITOR.mon_tape_read 0xe018 f
MONITOR.mon_tape_write 0xe01b f
MONITOR.mon_ram_disk_read 0xe01e f
MONITOR.mon_ram_disk_write 0xe021 f
MONITOR.mon_tape_read_ram 0xe024 f
MONITOR.mon_tape_write_ram 0xe027 f
MONITOR.mon_tape_wait 0xe02a f
MONITOR.mon_tape_detect 0xe02d f
MONITOR.mon_read_floppy 0xe030 f
MONITOR.mon_write_floppy 0xe033 f
MONITOR.mon_out_str_z 0xe036 f
MONITOR.m_start 0xe051 f
MONITOR.m_start.fill_video 0xe06c f
MONITOR.m_start.conf_uart 0xe0a7 f
MONITOR.m_start.conf_pic 0xe0ba f
MONITOR.m_out_strz 0xe0f1 f
MONITOR.mgs_system_nf 0xe0fc f
MONITOR.m_sys_halt 0xe111 f
MONITOR.m_con_status 0xe112 f
MONITOR.m_serial_in 0xe11c f
MONITOR.m_con_in 0xe128 f
MONITOR.m_serial_out 0xe13d f
MONITOR.m_char_print 0xe148 f
MONITOR.m_char_print.wait_lp 0xe157 f
MONITOR.m_con_out 0xe163 f
MONITOR.m_con_out_int 0xe16d f
MONITOR.get_esc_param 0xe187 f
MONITOR.esc_no_draw_fn 0xe1c1 f
MONITOR.esc_exit 0xe1c6 f
MONITOR.esc_params_tab 0xe1cb f
MONITOR.esc_handler_tab 0xe1db f
MONITOR.esc_set_beep 0xe1f9 f
MONITOR.esc_set_cursor2 0xe20e f
MONITOR.esc_print_screen 0xe211 f
MONITOR.esc_print_screen.chk_keys 0xe220 f
MONITOR.esc_print_screen.no_keys 0xe22d f
MONITOR.m_print_hor_line 0xe23a f
MONITOR.m_print_hor_line.print_next_col 0xe248 f
MONITOR.m_print_cmd 0xe276 f
MONITOR.m_print_cmd.print_nxt 0xe277 f
MONITOR.m_print_cmd.cmd_end 0xe285 f
MONITOR.m_print_vert_7pix 0xe287 f
MONITOR.cmd_esc_inc_Y2 0xe2a5 f
MONITOR.cmd_esc_set_X0 0xe2a9 f
MONITOR.cmd_esc_set_X 0xe2ae f
MONITOR.cmd_esc_print_col 0xe2b1 f
MONITOR.m_get_7vpix 0xe2b4 f
MONITOR.m_get_7vpix.calc_pix_no 0xe2be f
MONITOR.m_get_7vpix.for_all_pix 0xe2dc f
MONITOR.m_get_7vpix.all_shifted 0xe2e9 f
MONITOR.m_get_7vpix.not_1_1 0xe2f2 f
MONITOR.m_get_7vpix.not_1_2 0xe2fa f
MONITOR.esc_set_palette 0xe2fe f
MONITOR.esp_no_colr 0xe313 f
MONITOR.esc_set_charset 0xe317 f
MONITOR.m_get_glyph 0xe320 f
MONITOR.m_get_glyph.cp_rus 0xe340 f
MONITOR.m_get_glyph.cp_common 0xe344 f
MONITOR.m_print_no_esc 0xe349 f
MONITOR.m_print_no_esc.l1 0xe377 f
MONITOR.m_print_no_esc.l2 0xe381 f
MONITOR.m_print_no_esc.l3 0xe389 f
MONITOR.m_print_no_esc.l4 0xe391 f
MONITOR.m_print_no_esc.l5 0xe396 f
MONITOR.m_print_no_esc.sym_draw 0xe39a f
MONITOR.m_print_no_esc.pne_l7 0xe3a5 f
MONITOR.m_print_no_esc.pne_l8 0xe3aa f
MONITOR.m40_rt 0xe3ee f
MONITOR.m40_wrap_rt 0xe3f9 f
MONITOR.m40_lf 0xe405 f
MONITOR.m40_bksp 0xe40f f
MONITOR.m40_bksp.wrap 0xe41d f
MONITOR.m40_up 0xe421 f
MONITOR.m40_up.up_no_minus 0xe429 f
MONITOR.m20_tab 0xe42b f
MONITOR.calc_addr_40 0xe439 f
MONITOR.calc_addr_40.l1 0xe454 f
MONITOR.calc_addr_40.l2 0xe45a f
MONITOR.m2_lf 0xe464 f
MONITOR.m2_lf.lf_nowr 0xe46e f
MONITOR.m2_lf.cas_l5 0xe47b f
MONITOR.m2_lf.cas_l6 0xe480 f
MONITOR.m2_lf.cas_l7 0xe496 f
MONITOR.m2_lf.cas_l8 0xe49b f
MONITOR.m20_bksp 0xe4ab f
MONITOR.mp_mode_64 0xe4b8 f
MONITOR.mp_mode_64.next_row 0xe4d3 f
MONITOR.m64_rt 0xe4e7 f
MONITOR.m64_lf 0xe4f0 f
MONITOR.scroll_up 0xe4fa f
MONITOR.scroll_up.next_row 0xe512 f
MONITOR.scroll_up.next_col 0xe514 f
MONITOR.m64_bs 0xe524 f
MONITOR.m64_up 0xe52f f
MONITOR.m64_up.no_wrap 0xe537 f
MONITOR.m64_tab 0xe539 f
MONITOR.mp_mode_80 0xe545 f
MONITOR.mp_mode_80.l1 0xe55e f
MONITOR.mp_mode_80.l2 0xe56d f
MONITOR.mp_mode_80.l3 0xe58e f
MONITOR.mp_mode_80.l4 0xe5b3 f
MONITOR.mp_mode_80.l5 0xe5b4 f
MONITOR.mp_mode_80.l6 0xe5c4 f
MONITOR.m80_rt 0xe5cf f
MONITOR.m80_col_wrap 0xe5da f
MONITOR.m80_lf 0xe5de f
MONITOR.m80_bs 0xe5e8 f
MONITOR.m80_bs.wrap 0xe5f6 f
MONITOR.m80_up 0xe5fa f
MONITOR.m80_up.no_wrap 0xe602 f
MONITOR.m80_tab 0xe604 f
MONITOR.calc_addr_80 0xe612 f
MONITOR.mns_l1 0xe62d f
MONITOR.mns_ep_fm_0 0xe633 f
MONITOR.m_clear_screen 0xe639 f
MONITOR.m_clear_screen.fill_scrn 0xe652 f
MONITOR.m_clear_screen.mono_mode 0xe669 f
MONITOR.m_cursor_home 0xe66c f
MONITOR.m_clear_20_rows 0xe679 f
MONITOR.m_clear_20_rows.next_row 0xe683 f
MONITOR.m_clear_20_rows.next_col 0xe688 f
MONITOR.m_draw_cursor 0xe69a f
MONITOR.m_draw_cursor.dc_rt2 0xe6cf f
MONITOR.m_draw_cursor.dc_mid 0xe6d7 f
MONITOR.m_draw_cursor.dc_lt 0xe6dd f
MONITOR.m_draw_cursor.dc_rt1 0xe6e3 f
MONITOR.m_draw_cursor.dc_put 0xe6e6 f
MONITOR.m_draw_cursor.dc_mode_64 0xe703 f
MONITOR.m_draw_cursor.cur_64_next 0xe721 f
MONITOR.m_draw_cursor.dc_mode_80 0xe72f f
MONITOR.m_draw_cursor.dc_1_byte 0xe75e f
MONITOR.m_draw_cursor.dc_2_byte 0xe769 f
MONITOR.m_draw_cursor.dc_80_end 0xe776 f
MONITOR.m_handle_esc_code 0xe77c f
MONITOR.m_handle_control_code 0xe78a f
MONITOR.handle_cc_common 0xe7c4 f
MONITOR.handle_cc_common.handle_cc_mono 0xe7ff f
MONITOR.handle_cc_80x25 0xe833 f
MONITOR.m_beep 0xe85a f
MONITOR.m_bell_cont 0xe86f f
MONITOR.m_bell_wait_tmr1 0xe879 f
MONITOR.m_bell_wait_tmr2 0xe886 f
MONITOR.esc_set_cursor 0xe890 f
MONITOR.esc_set_cursor.mode_40 0xe8bf f
MONITOR.esc_set_cursor.mode_80 0xe8ca f
MONITOR.esc_set_cursor.common 0xe8d2 f
MONITOR.esc_le_24 0xe8df f
MONITOR.esc_set_vmode 0xe8e9 f
MONITOR.esc_set_vmode.set_color_mode 0xe90f f
MONITOR.esc_set_vmode.skip_for_mono_mode 0xe911 f
MONITOR.esc_set_vmode.draw_cursor 0xe91a f
MONITOR.esc_set_vmode.cursor_hide 0xe91e f
MONITOR.esc_set_vmode.cursor_show 0xe928 f
MONITOR.esc_set_color 0xe92f f
MONITOR.m_set_color 0xe932 f
MONITOR.m_print_at_xy 0xe943 f
MONITOR.m_print_at_xy.mode_sp 0xe986 f
MONITOR.m_print_at_xy.out_sp 0xe99b f
MONITOR.m_print_at_xy.next_line 0xe9a2 f
MONITOR.m_print_at_xy.l04 0xe9af f
MONITOR.m_print_at_xy.l05 0xe9b4 f
MONITOR.m_print_at_xy.sprites_en 0xe9e2 f
MONITOR.mode2_exit 0xe9e6 f
MONITOR.co_ex_l08 0xe9ed f
MONITOR.out_no_xor 0xe9f1 f
MONITOR.out_no_xor.l10 0xe9fe f
MONITOR.out_no_xor.l11 0xea03 f
MONITOR.game_sprite_tab 0xea39 f
MONITOR.calc_px_addr 0xeb51 f
MONITOR.esc_draw_fill_rect 0xeb64 f
MONITOR.esc_draw_fill_rect.non_zero_h 0xeb73 f
MONITOR.esc_draw_fill_rect.shift_mask_l 0xeb78 f
MONITOR.esc_draw_fill_rect.shift_mask_r 0xeb8d f
MONITOR.esc_draw_fill_rect.next_line 0xebb7 f
MONITOR.esc_draw_fill_rect.rectangle_xor 0xebc6 f
MONITOR.esc_draw_fill_rect.edf_l6 0xebd5 f
MONITOR.esc_draw_fill_rect.next_8px 0xebdf f
MONITOR.esc_draw_fill_rect.w_ne_0 0xebe0 f
MONITOR.esc_draw_fill_rect.r_mask 0xebf6 f
MONITOR.esc_draw_fill_rect.next_full 0xebfc f
MONITOR.esc_draw_fill_rect.complete 0xec0b f
MONITOR.esc_paint 0xec18 f
MONITOR.esc_paint.l1 0xec57 f
MONITOR.ep_fm_0 0xec8b f
MONITOR.ep_task_end 0xec9a f
MONITOR.ep_l4 0xecb5 f
MONITOR.ep_l5 0xecbd f
MONITOR.ep_l6 0xecc5 f
MONITOR.ep_f_fast 0xecd7 f
MONITOR.ep_l8 0xece5 f
MONITOR.ep_l9 0xed1d f
MONITOR.ep_l10 0xed2c f
MONITOR.ep_l11 0xed3d f
MONITOR.paint_find_next_right 0xed77 f
MONITOR.paint_find_next_right.l1 0xed84 f
MONITOR.paint_find_next_right.l2 0xed90 f
MONITOR.paint_find_next_left 0xed9a f
MONITOR.paint_find_next_left.l1 0xeda7 f
MONITOR.paint_find_next_left.l2 0xedb3 f
MONITOR.ep_l12 0xedbd f
MONITOR.ep_l13 0xedd6 f
MONITOR.ep_l14 0xede8 f
MONITOR.ep_l15 0xedf1 f
MONITOR.ep_l16 0xedfa f
MONITOR.paint_find_right 0xedfd f
MONITOR.paint_find_right.in_byte 0xee0a f
MONITOR.paint_find_left 0xee18 f
MONITOR.paint_find_left.in_byte 0xee24 f
MONITOR.get_pixel 0xee32 f
MONITOR.get_pixel.bit1_set 0xee48 f
MONITOR.get_pixel.bit2_set 0xee57 f
MONITOR.get_pixel.bit12_set 0xee5f f
MONITOR.paint_task 0xee67 f
MONITOR.paint_task.lmp_mask 0xee7e f
MONITOR.paint_task.rmp_mask 0xee97 f
MONITOR.paint_task.lmi_mask 0xeea3 f
MONITOR.paint_task.rmi_mask 0xeeac f
MONITOR.paint_exit 0xeec6 f
MONITOR.draw_line_h 0xeed1 f
MONITOR.draw_line_h.next_byte 0xeedc f
MONITOR.draw_line_h.width_ne0 0xeedd f
MONITOR.draw_line_h.r_mask 0xeef5 f
MONITOR.draw_line_h.full_8 0xeefb f
MONITOR.draw_line_h.complete 0xef06 f
MONITOR.esc_draw_line 0xef0b f
MONITOR.esc_draw_line.x1_le_x2 0xef1b f
MONITOR.esc_draw_line.pos_height 0xef2b f
MONITOR.esc_draw_line.next_16 0xef45 f
MONITOR.esc_draw_line.edl_l4 0xef51 f
MONITOR.esc_draw_line.edl_l5 0xef54 f
MONITOR.esc_draw_line.roll_l 0xef67 f
MONITOR.esc_draw_line.edl_l7 0xef6e f
MONITOR.esc_draw_line.next_up 0xef89 f
MONITOR.esc_draw_line.next_down 0xef9f f
MONITOR.esc_draw_line.is_last 0xefb5 f
MONITOR.esc_draw_line.edl_l11 0xefc3 f
MONITOR.esc_draw_line.width0 0xefcb f
MONITOR.esc_draw_line.edl_l13 0xefd1 f
MONITOR.esc_draw_line.next_row_up 0xefe5 f
MONITOR.esc_draw_line.next_row_down 0xeffb f
MONITOR.close_vram_ret 0xf011 f
MONITOR.height0 0xf016 f
MONITOR.height0.len_ne0 0xf01e f
MONITOR.height0.edl_l19 0xf023 f
MONITOR.height0.next_col 0xf033 f
MONITOR.height0.edl_l21 0xf048 f
MONITOR.esc_draw_dot 0xf052 f
MONITOR.edd_l1 0xf05b f
MONITOR.edd_ep_fm_0 0xf084 f
MONITOR.edd_ep_task_end 0xf09d f
MONITOR.esc_picture 0xf0a4 f
MONITOR.pict_sub1 0xf0d6 f
MONITOR.pict_clr 0xf0f3 f
MONITOR.ehd_l1 0xf104 f
MONITOR.m_fn_39 0xf10f f
MONITOR.m_fn_39.l1 0xf12e f
MONITOR.m_fn_39.l2 0xf148 f
MONITOR.m_fn_39.l3 0xf15f f
MONITOR.get_image_hdr 0xf177 f
MONITOR.esc_get_put_image 0xf1b5 f
MONITOR.get_image 0xf1e1 f
MONITOR.get_image.next_row 0xf1e3 f
MONITOR.get_image.l2 0xf1f2 f
MONITOR.put_image 0xf201 f
MONITOR.put_image.next_row 0xf203 f
MONITOR.put_image.l2 0xf213 f
MONITOR.img_task_end 0xf21e f
MONITOR.fn39_sub2 0xf223 f
MONITOR.fn39_sub2.l1 0xf224 f
MONITOR.fn39_sub2.l2 0xf225 f
MONITOR.fn39_sub2.l3 0xf233 f
MONITOR.fn39_sub2.l4 0xf238 f
MONITOR.fn39_sub2.l5 0xf245 f
MONITOR.fn39_sub2.l6 0xf24a f
MONITOR.gih_rt 0xf266 f
MONITOR.gih_rt.l1 0xf289 f
MONITOR.gih_rt.l2 0xf28d f
MONITOR.gih_rt.l3 0xf291 f
MONITOR.gih_bs 0xf2bd f
MONITOR.gih_bs.l1 0xf2dd f
MONITOR.gih_bs.l2 0xf2e9 f
MONITOR.gih_bs.l3 0xf2ed f
MONITOR.gih_ctrl_z 0xf319 f
MONITOR.gih_ctrl_z.l1 0xf32e f
MONITOR.gih_ctrl_z.l2 0xf332 f
MONITOR.gih_ctrl_z.l3 0xf345 f
MONITOR.gih_ctrl_z.l4 0xf34a f
MONITOR.gih_ctrl_z.l5 0xf35a f
MONITOR.gih_up 0xf368 f
MONITOR.gih_up.l1 0xf378 f
MONITOR.gih_up.l2 0xf390 f
MONITOR.gih_up.l3 0xf394 f
MONITOR.gih_up.l4 0xf3a7 f
MONITOR.gih_up.l5 0xf3ac f
MONITOR.gih_up.l6 0xf3bc f
MONITOR.pict_sub2 0xf3ca f
MONITOR.pict_sub2.l1 0xf3f2 f
MONITOR.pict_sub2.l2 0xf3f7 f
MONITOR.pict_sub2.l3 0xf3fb f
MONITOR.pict_sub2.l4 0xf426 f
MONITOR.mov_hl_bc 0xf43b f
MONITOR.mov_hl_bc.next 0xf442 f
MONITOR.esc_draw_circle 0xf44c f
MONITOR.esc_draw_circle.l1 0xf469 f
MONITOR.esc_draw_circle.l2 0xf480 f
MONITOR.esc_draw_circle.l3 0xf4a2 f
MONITOR.dc_draw_8px 0xf4ab f
MONITOR.dc_aspect_ratio_1 0xf4c7 f
MONITOR.dc_aspect_ratio_1.dc_ax_ne0 0xf4d7 f
MONITOR.dc_aspect_ratio_1.dc_ay_ne0 0xf4e0 f
MONITOR.dc_aspect_ratio2 0xf4e7 f
MONITOR.dc_aspect_ratio2.dc_ax_ne0 0xf4f7 f
MONITOR.dc_aspect_ratio2.dc_ay_ne0 0xf500 f
MONITOR.dc_mul_e_h 0xf507 f
MONITOR.dc_mul_e_h.l1 0xf50f f
MONITOR.dc_mul_e_h.l2 0xf514 f
MONITOR.dc_mul_e_h.l3 0xf519 f
MONITOR.dc_mul_e_h.l4 0xf51e f
MONITOR.dc_mul_e_h.l5 0xf523 f
MONITOR.dc_mul_e_h.l6 0xf528 f
MONITOR.dc_mul_e_h.l7 0xf52d f
MONITOR.dc_mul_e_h.l8 0xf532 f
MONITOR.dc_draw_4px_bc 0xf534 f
MONITOR.dc_draw_4px_bc.l1 0xf540 f
MONITOR.dc_draw_4px_bc.l2 0xf54c f
MONITOR.dc_draw_4px_bc.l3 0xf558 f
MONITOR.dc_draw_4px_cb 0xf563 f
MONITOR.dc_draw_4px_cb.l1 0xf56f f
MONITOR.dc_draw_4px_cb.l2 0xf57b f
MONITOR.l3 0xf587 f
MONITOR.dc_put_pixel 0xf592 f
MONITOR.dc_put_pixel.roll 0xf59a f
MONITOR.m_font_cp0 0xf5bc f
MONITOR.m_font_cp1 0xf85c f
MONITOR.conv_nibble 0xfa1c f
MONITOR.m_hexb 0xfa26 f
MONITOR.out_hex 0xfa2f f
MONITOR.m_tape_write_ram2 0xfa36 f
MONITOR.m_tape_write_ram2.cl_stack 0xfa3b f
MONITOR.m_tape_write_ram2.nxt_blk 0xfa5d f
MONITOR.twr2_delay 0xfa73 f
MONITOR.twr2_delay.delay 0xfa76 f
MONITOR.m_tape_read_ram2 0xfa7d f
MONITOR.m_tape_read_ram2.srch_first 0xfa88 f
MONITOR.m_tape_read_ram2.rd_next 0xfaa6 f
MONITOR.m_tape_read_ram2.not_found 0xfac5 f
MONITOR.m_tape_read_ram2.rd_error 0xfacc f
MONITOR.m_tape_read_ram2.inv_id 0xfae1 f
MONITOR.m_tape_read_ram2.err_ubi 0xfaed f
MONITOR.m_tape_read_ram2.err_ibu 0xfaf5 f
MONITOR.m_tape_read_ram2.end 0xfaf6 f
MONITOR.out_hexw 0xfafd f
MONITOR.msg_no_start_rec 0xfb08 f
MONITOR.msg_checksum 0xfb18 f
MONITOR.msg_sequence 0xfb22 f
MONITOR.msg_ibg 0xfb2c f
MONITOR.msg_break 0xfb30 f
MONITOR.me_out_strz 0xfb36 f
MONITOR.m_ramdisk_read 0xfb43 f
MONITOR.m_ramdisk_read.read 0xfb55 f
MONITOR.m_ramdisk_write 0xfb6d f
MONITOR.m_ramdisk_write.wr_byte 0xfb7f f
MONITOR.m_tape_write 0xfb97 f
MONITOR.m_tape_write.l1 0xfbae f
MONITOR.m_tape_write.set_lvl 0xfbc0 f
MONITOR.m_tape_write.l2 0xfbd0 f
MONITOR.m_tape_write.next_byte 0xfbee f
MONITOR.m_tape_write.wait_end 0xfc00 f
MONITOR.m_tape_wr_byte 0xfc0e f
MONITOR.m_tape_wr_byte.get_bit 0xfc15 f
MONITOR.m_tape_wr_byte.wait_t 0xfc1b f
MONITOR.m_tape_wr_byte.out_bit 0xfc39 f
MONITOR.m_tape_wr_byte.bit_hi 0xfc41 f
MONITOR.m_tape_wr_byte.out_bit_hi 0xfc5f f
MONITOR.m_tape_read 0xfc67 f
MONITOR.m_tape_read.wait_3_changes 0xfc79 f
MONITOR.m_tape_read.wait_4th_change 0xfc8a f
MONITOR.m_tape_read.wait_f5_marker 0xfc99 f
MONITOR.m_tape_read.read_next_b 0xfcbd f
MONITOR.m_tape_read.checksum_ok 0xfcd6 f
MONITOR.m_tape_read.return 0xfcd7 f
MONITOR.m_tape_read.err_read_blk 0xfcda f
MONITOR.m_tape_read.err_read_id 0xfcde f
MONITOR.m_tape_read.key_pressed 0xfce3 f
MONITOR.m_tape_read_byte 0xfcee f
MONITOR.m_tape_read_byte.next_bit 0xfcf1 f
MONITOR.m_tape_read_byte.ret_err 0xfd06 f
MONITOR.m_read_tape_bit 0xfd08 f
MONITOR.m_read_tape_bit.wait_change 0xfd0d f
MONITOR.read_tape_bit_kbd 0xfd2b f
MONITOR.read_tape_bit_kbd.wait_change 0xfd30 f
MONITOR.read_tape_bit_kbd.key_pressed 0xfd55 f
MONITOR.m_tape_wait 0xfd58 f
MONITOR.m_tape_wait.wait_t4 0xfd5c f
MONITOR.m_tape_wait.wait_next_2ms 0xfd62 f
MONITOR.m_tape_wait.wait_tmr_key 0xfd6d f
MONITOR.m_tape_wait.wait_no_rst4 0xfd86 f
MONITOR.m_tape_wait.key_pressed 0xfd8d f
MONITOR.m_tape_blk_detect 0xfd95 f
MONITOR.fdc_unload_head 0xfd9e f
MONITOR.fdc_unload_head.wait_no_busy 0xfda8 f
MONITOR.fdc_unload_head.tr0_ok 0xfdba f
MONITOR.fdc_unload_head.b1 0xfdc9 f
MONITOR.m_select_drive 0xfdd1 f
MONITOR.m_select_drive.sel_A 0xfddf f
MONITOR.m_select_drive.sel_B 0xfde1 f
MONITOR.m_select_drive.dpar_a 0xfdf6 f
MONITOR.m_select_drive.dpar_b 0xfdf9 f
MONITOR.m_select_drive.l_le 0xfe15 f
MONITOR.delay_136uS 0xfe24 f
MONITOR.delay_b 0xfe26 f
MONITOR.delay_1.4mS 0xfe2b f
MONITOR.m_read_floppy 0xfe30 f
MONITOR.m_write_floppy 0xfe43 f
MONITOR.m_start_seek_track 0xfe56 f
MONITOR.m_start_floppy 0xfe5f f
MONITOR.m_start_floppy.need_m_start 0xfe6b f
MONITOR.m_start_floppy.wait_motor 0xfe76 f
MONITOR.m_start_floppy.wait_rdy1 0xfe7d f
MONITOR.m_start_floppy.long_delay 0xfe8f f
MONITOR.m_start_floppy.mst_exi 0xfe95 f
MONITOR.fdc_init 0xfe97 f
MONITOR.m_fdc_seek_trk 0xfea3 f
MONITOR.m_fdc_seek_trk.drv_b 0xfebc f
MONITOR.m_fdc_seek_trk.cmn 0xfecd f
MONITOR.m_fdc_seek_trk.l1 0xfef5 f
MONITOR.m_fdc_seek_trk.l2 0xff06 f
MONITOR.m_fdc_seek_trk.l3 0xff1d f
MONITOR.m_fdc_seek_trk.l4 0xff20 f
MONITOR.m_fdc_write_bytes 0xff26 f
MONITOR.m_fdc_write_bytes.w_next 0xff29 f
MONITOR.m_fdc_read_c_bytes 0xff37 f
MONITOR.m_fdc_read_c_bytes.l1 0xff3d f
MONITOR.m_fdc_read_c_bytes.l2 0xff3f f
MONITOR.fdc_check_status 0xff4b f
MONITOR.fdc_ret 0xff55 f
MONITOR.filler1 0xff56 f
MONITOR.LAST 0xff57 l
MONITOR.CODE_SIZE 0x1f57 l
MONITOR.FILL_SIZE 0xa9 l
MONITOR.FILLER 0xff57 f

5596
MON_r8_9c6c6546/monitor.asm Normal file

File diff suppressed because it is too large Load Diff

49
MON_r8_9c6c6546/ram.inc Normal file
View File

@ -0,0 +1,49 @@
; =======================================================
; Ocean-240.2
;
; RAM area at address: 0x0000 - 0x0100, used by CP/M and
; HW-Monitor
; By Romych 2026-02-03
; =======================================================
IFNDEF _RAM
DEFINE _RAM
MODULE RAM
@warm_boot EQU 0x0000 ; Jump warm_boot (Restart)
@warm_boot_addr EQU 0x0001 ; address of warm boot entry point
@iobyte EQU 0x0003 ; Input/Output mapping
@cur_user_drv EQU 0x0004 ; [7:4] - curent user, [3:0] - current drive
@jp_bdos_enter EQU 0x0005 ; Jump bdos (CALL 5 to make CP/M requests)
@bdos_ent_addr EQU 0x0006 ; addres of BDOS entry point
@RST1 EQU 0x0008
@RST1_handler_addr EQU 0x0009
;RST2 EQU 0x0010
;RST3 EQU 0x0018
;RST4 EQU 0x0020
;RST5 EQU 0x0028
;RST6 EQU 0x0030
;RST7 EQU 0x0038
;reserve1 EQU 0x003b
@bios_var0 EQU 0x0040 ; 0xaa - bios init r8
@bios_var1 EQU 0x0041 ; 0xaa - bios init r8
@bios_var2 EQU 0x0042 ; 0x00 - bios init r8
@bios_var3 EQU 0x0043 ; 0xff - bios init r8
@interleave_0 EQU 0x0044
;reserve2 EQU 0x0050
@fcb1 EQU 0x005c ; Default FCB, 16 bytes
@fcb2 EQU 0x006c
;NMI_ISR EQU 0x0066
@dma_buffer EQU 0x0080 ; Default "DMA" 128 bytes buffer
@p_cmd_line_len EQU 0x0080 ; command line character count
@p_cmd_line EQU 0x0081 ; command line buffer
@fcb_ra_record_num EQU 0x00a1
@bios_stack EQU 0x0100
@tpa_start EQU 0x0100 ; start of program
@video_ram EQU 0x4000
ENDMODULE
ENDIF

View File

@ -0,0 +1,9 @@
{
"recommendations": [
"maziac.asm-code-lens",
"maziac.dezog",
"maziac.hex-hover-converter",
"maziac.z80-instruction-set",
"maziac.sna-fileviewer"
]
}

34
MON_r8_bedc54ad/.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,34 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "make MONITOR (sjasmplus)",
"type": "shell",
"command": "sjasmplus",
"args": [
"--sld=monitor.sld",
"--sym=monitor.labels",
"--raw=monitor.obj",
"--fullpath",
"monitor.asm"
],
"problemMatcher": {
"owner": "sjasmplus",
"fileLocation": "autoDetect",
"pattern": {
"regexp": "^(.*)\\((\\d+)\\):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"severity": 3,
"message": 4
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

Binary file not shown.

16
MON_r8_bedc54ad/README.md Normal file
View File

@ -0,0 +1,16 @@
# Ocean-240.2 ROM Monitor V8 checksum bedc54ad
Source codes of Monitor v8 for Ocean-240.2 with Floppy controller.
In Z80 mnemonics, but limited for i8080 instruction set.
## Differences:
1) Font. Russian letters б and д;
## Compile:
Code is located in memory at address: 0xE000..0xFFFF
sjasmplus --sld=monitor.sld --sym=monitor.labels --raw=monitor.obj --fullpath monitor.asm
To compile sources, use [sjasmplus Z80 assembler](https://github.com/z00m128/sjasmplus).

View File

@ -0,0 +1,41 @@
; =======================================================
; Ocean-240.2
; Definition of CPM BIOS entries to compile depended
; modules
;
; By Romych 2025-09-09
; ======================================================
IFNDEF _BIOS
DEFINE _BIOS
MODULE BIOS
boot_f EQU 0xD600
wboot_f EQU 0xD603
const_f EQU 0xD606
conin_f EQU 0xD609
conout_f EQU 0xD60C
list_f EQU 0xD60F
punch_f EQU 0xD612
reader_f EQU 0xD615
home_f EQU 0xD618
seldsk_f EQU 0xD61B
settrk_f EQU 0xD61E
setsec_f EQU 0xD621
setdma_f EQU 0xD624
read_f EQU 0xD627
write_f EQU 0xD62A
sectran_f EQU 0xD630
reserved_f1 EQU 0xD633
reserved_f2 EQU 0xD636
tape_read_f EQU 0xD639
tape_write_f EQU 0xD63C
tape_wait_f EQU 0xD63F
bios_var04 EQU 0xD64B
ENDMODULE
ENDIF

149
MON_r8_bedc54ad/equates.inc Normal file
View File

@ -0,0 +1,149 @@
; ======================================================
; Ocean-240.2
; Equates for all assembly sources
;
; By Romych 2025-09-09
; ======================================================
IFNDEF _EQUATES
DEFINE _EQUATES
ADDLIST EQU 0x08
ASCII_BELL EQU 0x07 ; Make Beep
ASCII_BS EQU 0x08 ; Move cursor left (Back Space)
ASCII_TAB EQU 0x09 ; Move cursor right +8 pos
ASCII_LF EQU 0x0A ; Move cursor down (Line Feed)
ASCII_FF EQU 0x0C ; Move cursor to home (Form Feed)
ASCII_CR EQU 0x0D ; Move gursor to 1st pos (Cariage Return)
ASCII_CAN EQU 0x18 ; Move cursor right
ASCII_EM EQU 0x19 ; Move cursor up
ASCII_SUB EQU 0x1A ; CTRL-Z - end of text file marker
ASCII_ESC EQU 0x1B ;
ASCII_US EQU 0x1F ; Clear screen
ASCII_SP EQU 0x20
ASCII_DEL EQU 0x7F
; ------------------------------------------------------
BDOS_NFUNCS EQU 41
BELL_PIN EQU 0x08 ; DD67 Pin PC3 - "BELL"
; ------------------------------------------------------
CCP_COMMAND_SIZE EQU 5 ; max length of CCP command
CCP_COMMAND_COUNT EQU 3 ; Count of CCP commands
CCP_COMMAND_CNT EQU 6
CCP_COMMAND_LEN EQU 4
CCP_SRC_ADDR EQU 0xc000 ; Address of CCP resident part in ROM
CCP_DST_ADDR EQU 0xb200 ; Address of CCP resident part in RAM
CCP_SIZE EQU 0x809
CPM_VERSION EQU 0x22 ; Version of CP/M as byte nibbles '2.2'
CTRL EQU 0x5E ; ^
CTRL_C EQU 0x03 ; Warm boot
CTRL_H EQU 0x08 ; Backspace
CTRL_E EQU 0x05 ; Move to beginning of new line (Physical EOL)
CTRL_J EQU 0x0A ; LF - Line Feed
CTRL_M EQU 0x0D ; CR - Carriage Return
CTRL_P EQU 0x10 ; turn on/off printer
CTRL_R EQU 0x12 ; Repeat current cmd line
CTRL_S EQU 0x13 ; Temporary stop display data to console (aka DC3)
CTRL_U EQU 0x15 ; Cancel (erase) current cmd line
CTRL_X EQU 0x18 ; Cancel (erase) current cmd line
; ------------------------------------------------------
DBPLIST EQU 0x0F
DEF_DISK_A_SIZE EQU 0x3F
DEF_DISK_B_SIZE EQU 0x0168
DIR_BUFF_SIZE EQU 128
DSK_MAP EQU 0x10
DSK_MSK EQU 0x03
DSK_SHF EQU 0x02
DMA_BUFF_SIZE EQU 0x80
; ------------------------------------------------------
ENDDIR EQU 0xFFFF
ESC_CMD_END EQU 0x1A
;EXT_NUM EQU 12 ; Extent byte offset
; ------------------------------------------------------
FALSE EQU 0x00
FDC_DD80RB EQU 0x21
FDC_NOT_READY EQU 0x80
FDC_RESTORE_L EQU 0x08
FDC_SEEK_LV EQU 0x1C
FDC_RESTORE_UH_NV EQU 0x03 ; Restore Unload Head, No Verify, 15ms Rate
FILE_DELETED EQU 0xE5
FWF_MASK EQU 0x80 ; File Write Flag mask
; ---------------------------------------------------
; FCB Offsets
; ---------------------------------------------------
FCB_LEN EQU 32 ; length of FCB
FCB_SHF EQU 5
FN_LEN EQU 12 ; Length of filename in FCB
FCB_DR EQU 0 ; Drive. 0 for default, 1-16 for A-P
FCB_FN EQU 1 ; Fn - Filename, 7-bit ASCII. The top bits - attributes
FCB_FT EQU 9 ; Filetype, 7-bit ASCII.
; T1' to T3' have the following
; T1' - Read-Only
; T2' - System (hidden)
; T3' - Archive
FCB_EXT EQU 12 ; EX - Set this to 0 when opening a file and then leave it to
; CP/M. You can rewind a file by setting EX, RC, S2 and CR to 0.
FCB_S1 EQU 13 ; S1 - Reserved.
FCB_S2 EQU 14 ; S2 - Reserved. Bit 7 - wile write flag, [6:0] module number (Extent hi bits)
FCB_RC EQU 15 ; RC - Set this to 0 when opening a file and then leave it to CP/M.
FCB_AL EQU 16 ; AL - Image of the second half of the directory entry,
; containing the file's allocation (which disc blocks it owns).
FCB_CR EQU 32 ; CR - Current record within extent. It is usually best to set
; this to 0 immediately after a file has been opened and
; then ignore it.
FCB_RN EQU 33 ; Rn - Random access record number. A 16-bit (with R2 used for overflow)
; ------------------------------------------------------
JP_OPCODE EQU 0xC3
; ------------------------------------------------------
IRQ_0 EQU 0x01
IRQ_1 EQU 0x02
IRQ_2 EQU 0x04
;LP_IRQ EQU 0x08
KBD_IRQ EQU 0x02
KBD_ACK EQU 0x10
KEY_ALF EQU 0x0D
KEY_FIX EQU 0x15
; ------------------------------------------------------
LST_REC EQU 0x7F
; ------------------------------------------------------
MAX_EXT EQU 0x1F
MAX_MOD EQU 0x0F
;MOD_NUM EQU 0x0E
; ------------------------------------------------------
FCB_INFO_LEN EQU 15 ; length of FCB info bytes to match
;NXT_REC EQU 0x20
; ------------------------------------------------------
PIC_POLL_MODE EQU 0x0A
PORT_C4 EQU 0x10
PRINTER_ACK EQU 0x10
PRINTER_IRQ EQU 0x08
; ------------------------------------------------------
;RAN_REC EQU 0x21
;FCB_RC EQU 0x0F
RO_FILE EQU 0x09
ROM_CHIP_SIZE EQU 8192 ; ROM Size, used to limit monitor code size
RX_READY EQU 0x02
; ------------------------------------------------------
TAPE_D EQU 0x08
TAPE_P EQU 0x04
TIMER_IRQ EQU 0x10
TL_HIGH EQU 0x05
TL_LOW EQU 0x03
TL_MID EQU 0x04
TMR0_SQWAVE EQU 0x36
TRUE EQU 0xFF
TX_READY EQU 0x01
; ------------------------------------------------------
ENDIF

View File

@ -0,0 +1,165 @@
; 96 symbols 6x7, with codes 0x20..0x7f KOI-7 H0
m_font_cp0:
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ; ' ' - 0x20
DB 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x04 ; '!' - 0x21
DB 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00 ; '"' - 0x22
DB 0x0a, 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x0a ; '#' - 0x23
DB 0x04, 0x1e, 0x05, 0x0e, 0x14, 0x0f, 0x04 ; '$' - 0x24
DB 0x03, 0x13, 0x08, 0x04, 0x02, 0x19, 0x18 ; '%' - 0x25
DB 0x06, 0x09, 0x05, 0x02, 0x15, 0x09, 0x16 ; '&' - 0x26
DB 0x06, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 ; ' - 0x27
DB 0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08 ; '(' - 0x28
DB 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x02 ; ')' - 0x29
DB 0x00, 0x0a, 0x04, 0x1f, 0x04, 0x0a, 0x00 ; '*' - 0x2a
DB 0x00, 0x04, 0x04, 0x1f, 0x04, 0x04, 0x00 ; '+' - 0x2b
DB 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x02 ; ',' - 0x2c
DB 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00 ; '-' - 0x2d
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06 ; '.' - 0x2e
DB 0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00 ; '/' - 0x2f
DB 0x0e, 0x11, 0x19, 0x15, 0x13, 0x11, 0x0e ; '0' - 0x30
DB 0x04, 0x06, 0x04, 0x04, 0x04, 0x04, 0x0e ; '1' - 0x31
DB 0x0e, 0x11, 0x10, 0x08, 0x04, 0x02, 0x1f ; '2' - 0x32
DB 0x1f, 0x08, 0x04, 0x08, 0x10, 0x11, 0x0e ; '3' - 0x33
DB 0x08, 0x0c, 0x0a, 0x09, 0x1f, 0x08, 0x08 ; '4' - 0x34
DB 0x1f, 0x01, 0x0f, 0x10, 0x10, 0x11, 0x0e ; '5' - 0x35
DB 0x0c, 0x02, 0x01, 0x0f, 0x11, 0x11, 0x0e ; '6' - 0x36
DB 0x1f, 0x10, 0x08, 0x04, 0x02, 0x02, 0x02 ; '7' - 0x37
DB 0x0e, 0x11, 0x11, 0x0e, 0x11, 0x11, 0x0e ; '8' - 0x38
DB 0x0e, 0x11, 0x11, 0x1e, 0x10, 0x08, 0x06 ; '9' - 0x39
DB 0x00, 0x06, 0x06, 0x00, 0x06, 0x06, 0x00 ; ':' - 0x3a
DB 0x00, 0x06, 0x06, 0x00, 0x06, 0x04, 0x02 ; ';' - 0x3b
DB 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08 ; '<' - 0x3c
DB 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00 ; '=' - 0x3d
DB 0x02, 0x04, 0x08, 0x10, 0x08, 0x04, 0x02 ; '>' - 0x3e
DB 0x0e, 0x11, 0x10, 0x08, 0x04, 0x00, 0x04 ; '?' - 0x3f
DB 0x0e, 0x11, 0x10, 0x16, 0x15, 0x15, 0x0e ; '@' - 0x40
DB 0x04, 0x0a, 0x11, 0x11, 0x1f, 0x11, 0x11 ; 'A' - 0x41
DB 0x0f, 0x11, 0x11, 0x0f, 0x11, 0x11, 0x0f ; 'B' - 0x42
DB 0x0e, 0x11, 0x01, 0x01, 0x01, 0x11, 0x0e ; 'C' - 0x43
DB 0x07, 0x09, 0x11, 0x11, 0x11, 0x09, 0x07 ; 'D' - 0x44
DB 0x1f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x1f ; 'E' - 0x45
DB 0x1f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x01 ; 'F' - 0x46
DB 0x0e, 0x11, 0x01, 0x1d, 0x11, 0x11, 0x1e ; 'G' - 0x47
DB 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 ; 'H' - 0x48
DB 0x0e, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0e ; 'I' - 0x49
DB 0x1c, 0x08, 0x08, 0x08, 0x08, 0x09, 0x06 ; 'J' - 0x4a
DB 0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11 ; 'K' - 0x4b
DB 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1f ; 'L' - 0x4c
DB 0x11, 0x1b, 0x15, 0x15, 0x11, 0x11, 0x11 ; 'M' - 0x4d
DB 0x11, 0x11, 0x13, 0x15, 0x19, 0x11, 0x11 ; 'N' - 0x4e
DB 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e ; 'O' - 0x4f
DB 0x0f, 0x11, 0x11, 0x0f, 0x01, 0x01, 0x01 ; 'P' - 0x50
DB 0x0e, 0x11, 0x11, 0x11, 0x15, 0x09, 0x16 ; 'Q' - 0x51
DB 0x0f, 0x11, 0x11, 0x0f, 0x05, 0x09, 0x11 ; 'R' - 0x52
DB 0x1e, 0x01, 0x01, 0x0e, 0x10, 0x10, 0x0f ; 'S' - 0x53
DB 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 ; 'T' - 0x54
DB 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e ; 'U' - 0x55
DB 0x11, 0x11, 0x11, 0x11, 0x0a, 0x0a, 0x04 ; 'V' - 0x56
DB 0x11, 0x11, 0x11, 0x15, 0x15, 0x15, 0x0a ; 'W' - 0x57
DB 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 ; 'X' - 0x58
DB 0x11, 0x11, 0x11, 0x0a, 0x04, 0x04, 0x04 ; 'Y' - 0x59
DB 0x1f, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1f ; 'Z' - 0x5a
DB 0x0e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0e ; '[' - 0x5b
DB 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00 ; '\' - 0x5c
DB 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0e ; ']' - 0x5d
DB 0x0e, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00 ; '^' - 0x5r
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f ; '_' - 0x5f
DB 0x1c, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00 ; '`' - 0x60
DB 0x00, 0x00, 0x0e, 0x10, 0x1e, 0x13, 0x1e ; 'a' - 0x61
DB 0x01, 0x01, 0x0d, 0x13, 0x11, 0x11, 0x0f ; 'b' - 0x62
DB 0x00, 0x00, 0x0e, 0x01, 0x01, 0x01, 0x0e ; 'c' - 0x63
DB 0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x1e ; 'd' - 0x64
DB 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x01, 0x0e ; 'e' - 0x65
DB 0x18, 0x04, 0x04, 0x0e, 0x04, 0x04, 0x04 ; 'f' - 0x66
DB 0x00, 0x0e, 0x11, 0x11, 0x1e, 0x10, 0x0e ; 'g' - 0x67
DB 0x01, 0x01, 0x0d, 0x13, 0x11, 0x11, 0x11 ; 'h' - 0x68
DB 0x04, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04 ; 'i' - 0x69
DB 0x08, 0x00, 0x08, 0x08, 0x08, 0x08, 0x06 ; 'j' - 0x6a
DB 0x01, 0x01, 0x09, 0x05, 0x03, 0x05, 0x09 ; 'k' - 0x6b
DB 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08 ; 'l' - 0x6c
DB 0x00, 0x00, 0x0f, 0x15, 0x15, 0x15, 0x15 ; 'm' - 0x6d
DB 0x00, 0x00, 0x09, 0x13, 0x11, 0x11, 0x11 ; 'n' - 0x6e
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e ; 'o' - 0x6f
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x0f, 0x01 ; 'p' - 0x70
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x1e, 0x10 ; 'q' - 0x71
DB 0x00, 0x00, 0x0d, 0x13, 0x01, 0x01, 0x01 ; 'r' - 0x72
DB 0x00, 0x00, 0x1e, 0x01, 0x0e, 0x10, 0x0f ; 's' - 0x73
DB 0x04, 0x04, 0x0e, 0x04, 0x04, 0x04, 0x18 ; 't' - 0x74
DB 0x00, 0x00, 0x11, 0x11, 0x11, 0x19, 0x16 ; 'u' - 0x75
DB 0x00, 0x00, 0x11, 0x11, 0x0a, 0x0a, 0x04 ; 'v' - 0x76
DB 0x00, 0x00, 0x11, 0x15, 0x15, 0x15, 0x0a ; 'w' - 0x77
DB 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 ; 'x' - 0x78
DB 0x00, 0x00, 0x11, 0x11, 0x1e, 0x10, 0x0c ; 'y' - 0x79
DB 0x00, 0x00, 0x1f, 0x08, 0x04, 0x02, 0x1f ; 'z' - 0x7a
DB 0x0c, 0x02, 0x02, 0x01, 0x02, 0x02, 0x0c ; '{' - 0x7b
DB 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 ; '|' - 0x7c
DB 0x03, 0x04, 0x04, 0x08, 0x04, 0x04, 0x03 ; '}' - 0x7d
DB 0x00, 0x02, 0x15, 0x0a, 0x15, 0x08, 0x00 ; '~' - 0x7e
DB 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15 ; [DEL] - 0x7f
; 64 symbols 6x7, with codes 0x40..0x7f KOI-7 H1
m_font_cp1:
DB 0x00, 0x00, 0x09, 0x15, 0x17, 0x15, 0x09 ; ю - 0x40
DB 0x00, 0x00, 0x06, 0x08, 0x0e, 0x09, 0x16 ; а - 0x41
DB 0x07, 0x02, 0x04, 0x0e, 0x09, 0x09, 0x06 ; б - 0x42 DIFF
DB 0x00, 0x00, 0x09, 0x09, 0x09, 0x1f, 0x10 ; ц - 0x43
DB 0x03, 0x04, 0x08, 0x0e, 0x09, 0x09, 0x06 ; д - 0x44 DIFF
DB 0x00, 0x00, 0x0e, 0x11, 0x1f, 0x01, 0x1e ; е - 0x45
DB 0x00, 0x04, 0x0e, 0x15, 0x15, 0x0e, 0x04 ; ф - 0x46
DB 0x00, 0x00, 0x0f, 0x09, 0x01, 0x01, 0x01 ; г - 0x47
DB 0x00, 0x00, 0x11, 0x0a, 0x04, 0x0a, 0x11 ; х - 0x48
DB 0x00, 0x00, 0x11, 0x19, 0x15, 0x13, 0x11 ; и - 0x49
DB 0x0a, 0x04, 0x11, 0x19, 0x15, 0x13, 0x11 ; й - 0x4a
DB 0x00, 0x00, 0x11, 0x09, 0x07, 0x09, 0x11 ; к - 0x4b
DB 0x00, 0x00, 0x1c, 0x12, 0x12, 0x12, 0x11 ; л - 0x4c
DB 0x00, 0x00, 0x11, 0x1b, 0x15, 0x11, 0x11 ; м - 0x4d
DB 0x00, 0x00, 0x11, 0x11, 0x1f, 0x11, 0x11 ; н - 0x4e
DB 0x00, 0x00, 0x0e, 0x11, 0x11, 0x11, 0x0e ; о - 0x4f
DB 0x00, 0x00, 0x1f, 0x11, 0x11, 0x11, 0x11 ; п - 0x50
DB 0x00, 0x00, 0x1e, 0x11, 0x1e, 0x14, 0x12 ; я - 0x51
DB 0x00, 0x00, 0x07, 0x09, 0x07, 0x01, 0x01 ; р - 0x52
DB 0x00, 0x00, 0x0e, 0x01, 0x01, 0x01, 0x0e ; с - 0x53
DB 0x00, 0x00, 0x1f, 0x04, 0x04, 0x04, 0x04 ; т - 0x54
DB 0x00, 0x00, 0x11, 0x11, 0x1e, 0x10, 0x0e ; у - 0x55
DB 0x00, 0x00, 0x15, 0x15, 0x0e, 0x15, 0x15 ; ж - 0x56
DB 0x00, 0x00, 0x03, 0x05, 0x07, 0x09, 0x07 ; в - 0x57
DB 0x00, 0x00, 0x01, 0x01, 0x07, 0x09, 0x07 ; ь - 0x58
DB 0x00, 0x00, 0x11, 0x11, 0x13, 0x15, 0x13 ; ы - 0x59
DB 0x00, 0x00, 0x0e, 0x11, 0x0c, 0x11, 0x0e ; з - 0x5a
DB 0x00, 0x00, 0x15, 0x15, 0x15, 0x15, 0x1f ; ш - 0x5b
DB 0x00, 0x00, 0x07, 0x08, 0x0e, 0x08, 0x07 ; э - 0x5c
DB 0x00, 0x00, 0x15, 0x15, 0x15, 0x1f, 0x10 ; щ - 0x5d
DB 0x00, 0x00, 0x09, 0x09, 0x0e, 0x08, 0x08 ; ч - 0x5e
DB 0x00, 0x00, 0x06, 0x05, 0x0c, 0x14, 0x0c ; ъ - 0x5f
DB 0x09, 0x15, 0x15, 0x17, 0x15, 0x15, 0x09 ; Ю - 0x60
DB 0x04, 0x0a, 0x11, 0x11, 0x1f, 0x11, 0x11 ; А - 0x61
DB 0x1f, 0x11, 0x01, 0x0f, 0x11, 0x11, 0x1f ; Б - 0x62
DB 0x09, 0x09, 0x09, 0x09, 0x09, 0x1f, 0x10 ; С - 0x63
DB 0x0c, 0x0a, 0x0a, 0x0a, 0x0a, 0x1f, 0x11 ; Д - 0x64
DB 0x1f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x1f ; Е - 0x65
DB 0x04, 0x0e, 0x15, 0x15, 0x15, 0x0e, 0x04 ; Ф - 0x66
DB 0x1f, 0x11, 0x01, 0x01, 0x01, 0x01, 0x01 ; Г - 0x67
DB 0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11 ; Х - 0x68
DB 0x11, 0x11, 0x19, 0x15, 0x13, 0x11, 0x11 ; И - 0x69
DB 0x04, 0x15, 0x11, 0x19, 0x15, 0x13, 0x11 ; Й - 0x6a
DB 0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11 ; К - 0x6b
DB 0x1c, 0x12, 0x12, 0x12, 0x12, 0x12, 0x11 ; Л - 0x6c
DB 0x11, 0x1b, 0x15, 0x15, 0x11, 0x11, 0x11 ; М - 0x6d
DB 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11 ; Н - 0x6e
DB 0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e ; О - 0x6f
DB 0x1f, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 ; П - 0x70
DB 0x1e, 0x11, 0x11, 0x11, 0x1e, 0x12, 0x11 ; Я - 0x71
DB 0x0f, 0x11, 0x11, 0x11, 0x0f, 0x01, 0x01 ; Р - 0x72
DB 0x0e, 0x11, 0x01, 0x01, 0x01, 0x11, 0x0e ; С - 0x73
DB 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 ; Т - 0x74
DB 0x11, 0x11, 0x11, 0x11, 0x1e, 0x10, 0x0e ; У - 0x75
DB 0x15, 0x15, 0x15, 0x0e, 0x15, 0x15, 0x15 ; Ж - 0x76
DB 0x0f, 0x11, 0x11, 0x0f, 0x11, 0x11, 0x0f ; В - 0x77
DB 0x01, 0x01, 0x01, 0x0f, 0x11, 0x11, 0x0f ; Ь - 0x78
DB 0x11, 0x11, 0x11, 0x13, 0x15, 0x15, 0x13 ; Ы - 0x79
DB 0x0e, 0x11, 0x10, 0x0c, 0x10, 0x11, 0x0e ; З - 0x7a
DB 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x1f ; Ш - 0x7b
DB 0x0e, 0x11, 0x10, 0x1c, 0x10, 0x11, 0x0e ; Э - 0x7c
DB 0x15, 0x15, 0x15, 0x15, 0x15, 0x1f, 0x10 ; Щ - 0x7d
DB 0x11, 0x11, 0x11, 0x1e, 0x10, 0x10, 0x10 ; Ч - 0x7e
DB 0x1f, 0x15, 0x1f, 0x15, 0x1f, 0x15, 0x1f ; [DEL] - 0x7f

132
MON_r8_bedc54ad/io.inc Normal file
View File

@ -0,0 +1,132 @@
; =======================================================
; Ocean-240.2
; Computer with FDC variant.
; IO Ports definitions
;
; By Romych 2025-09-09
; =======================================================
IFNDEF _IO_PORTS
DEFINE _IO_PORTS
; -------------------------------------------------------
; КР580ВВ55 DD79
; -------------------------------------------------------
; Port A - User port A
USR_DD79PA EQU 0x00
; Port B - User port B
USR_DD79PB EQU 0x01
; Port C - User port C
USR_DD79PC EQU 0x02
; Config: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1]
USR_DD79CTR EQU 0x03
; -------------------------------------------------------
; КР1818ВГ93
; -------------------------------------------------------
; CMD
FDC_CMD EQU 0x20
; TRACK
FDC_TRACK EQU 0x21
; SECTOR
FDC_SECT EQU 0x22
; DATA
FDC_DATA EQU 0x23
;
FDC_WAIT EQU 0x24
; Controller port
FLOPPY EQU 0x25
; -------------------------------------------------------
; КР580ВВ55 DD78
; -------------------------------------------------------
; Port A - Keyboard Data
KBD_DD78PA EQU 0x40
; Port B - JST3,SHFT,CTRL,ACK,TAPE5,TAPE4,GK,GC
KBD_DD78PB EQU 0x41
; Port C - [PC7..0]
KBD_DD78PC EQU 0x42
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
KBD_DD78CTR EQU 0x43
; -------------------------------------------------------
; КР580ВИ53 DD70
; -------------------------------------------------------
; Counter 1
TMR_DD70C1 EQU 0x60
; Counter 2
TMR_DD70C2 EQU 0x61
; Counter 3
TMR_DD70C3 EQU 0x62
; Config: [sc1,sc0][rl1,rl0][m2,m1,m0][bcd]
; sc - timer, rl=01-LSB, 10-MSB, 11-LSB+MSB
; mode 000 - int on fin,
; 001 - one shot,
; x10 - rate gen,
; x11-sq wave
TMR_DD70CTR EQU 0x63
; Programable Interrupt controller PIC KR580VV59
PIC_DD75RS EQU 0x80
PIC_DD75RM EQU 0x81
; -------------------------------------------------------
; КР580ВВ51 DD72
; -------------------------------------------------------
; Data
UART_DD72RD EQU 0xA0
; [RST,RQ_RX,RST_ERR,PAUSE,RX_EN,RX_RDY,TX_RDY]
UART_DD72RR EQU 0xA1
; -------------------------------------------------------
; КР580ВВ55 DD17
; -------------------------------------------------------
; Port A - VShift[8..1]
SYS_DD17PA EQU 0xC0
; Port B - [ROM14,13][REST][ENROM-][A18,17,16][32k]
SYS_DD17PB EQU 0xC1
; Port C - HShift[HS5..1,SB3..1]
SYS_DD17PC EQU 0xC2
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
SYS_DD17CTR EQU 0xC3
; -------------------------------------------------------
; КР580ВВ55 DD67
; -------------------------------------------------------
; Port A - LPT Data
LPT_DD67PA EQU 0xE0
; Port B - [VSU,C/M,FL3..1,COL3..1]
VID_DD67PB EQU 0xE1
; Port C - [USER3..1,STB-LP,BELL,TAPE3..1]
DD67PC EQU 0xE2
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
DD67CTR EQU 0xE3
ENDIF

101
MON_r8_bedc54ad/m_vars.inc Normal file
View File

@ -0,0 +1,101 @@
; =======================================================
; Ocean-240.2
; Module M_VARS - Monitor variables
; RAM Range: 0xBA09-0xBFFF
;
; Disassembled by Romych 2025-02-05
; =======================================================
IFNDEF _M_VARS
DEFINE _M_VARS
MODULE M_VARS
ORG 0xbf00
buffer DS 128 ; 0xbf00 search text or buffer to search?
DS 36
paint_stack EQU $ ; 0xbfa4
DS 32
stack1: EQU $ ; 0xbfc4
DS 1
paint_var1 DS 1 ; 0xbfc5
paint_var2 DS 1 ; 0xbfc6
paint_var3 DS 1 ; 0xbfc7
paint_var4 DS 1 ; 0xbfc8
paint_var5 DS 1 ; 0xbfc9
paint_y DS 1 ; 0xbfca
paint_var7 DS 1 ; 0xbfcb
cmp_color DS 1 ; 0xbfcc
paint_sp_save DS 2
; Right pixel mask ex: 11111000
pixel_mask_r DS 1 ; 0xbfcf
tmp_color DS 1 ; 0xbfd0
rect_var2 DS 1 ; 0xbfd1
stack_0 EQU $
rect_var3 DS 1 ; 0xbfd2
esc_mode DS 1 ; 0xbfd3
esc_cmd DS 1 ; 0xbfd4
esc_param_cnt DS 1 ; 0xbfd5
esc_param DS 7 ; 0xbfd6
; Left inverse pixel mask ex: 00011111
pixel_mask_l_i DS 1
; Right inverse pixel mask ex: 00011111
pixel_mask_r_i DS 1
; Left pixel mask ex: 11100000
pixel_mask_l DS 1
; Current screen mode, bit 3 - hide/show cursor, bit 4 - only 20 rows
screen_mode DS 1 ; 0xbfe0
cursor_row DS 1 ; 0xbfe1 Cursor Y position
cursor_col DS 1 ; 0xbfe2 Cursor X position
curr_color DS 2 ; 0xbfe3 Current color low and hi bytes
esc_hex_cmd:
row_shift DS 1 ; 0xbfe5
codepage DS 1 ; 0xbfe6
cur_palette DS 1 ; 0xbfe7 00bbbfff - background and foreground colors
beep_period DS 2 ; 0xbfe8
beep_duration DS 2 ; 0xbfea
pix_shift DS 1 ; 0xbfec
strobe_state DS 1 ; 0xbfed
ul_var0 DS 1 ; 0xbfee
ul_A_var1 DS 1 ; 0xbfef
ul_B_var2 DS 1 ; 0xbff0
ul_var3 DS 1 ; 0xbff1
ul_A_var4 DS 1 ; 0xbff2
ul_B_var5 DS 1 ; 0xbff3
ul_var6 DS 1 ; 0xbff4
esc_var0 DS 1 ; 0xbff5
esc_var1 DS 1 ; 0xbff6
esc_var2 DS 1 ; 0xbff7
esc_var3 DS 1 ; 0xbff8
DS 1 ; 0xbff9
DS 1 ; 0xbffa
DS 1 ; 0xbffb
DS 1 ; 0xbffc
DS 1 ; 0xbffd
DS 1 ; 0xbffe
DS 1 ; 0xbfff
ASSERT stack1 = 0xbfc4
ASSERT buffer = 0xbf00
ASSERT paint_var1 = 0xbfc5
ASSERT pixel_mask_r = 0xbfcf
ASSERT stack_0 = 0xbfd2
ASSERT esc_mode = 0xbfd3
ASSERT screen_mode = 0xbfe0
ASSERT cur_palette = 0xbfe7
ASSERT ul_var0 = 0xbfee
ASSERT paint_stack = 0xbfa4
ASSERT esc_var3 = 0xbff8
;DISPLAY "screen_mode: ", /H, screen_mode
;DISPLAY "fn48_var1: ", /H, fn48_var1
ENDMODULE
ENDIF

View File

@ -0,0 +1,449 @@
MONITOR.start 0xe000 f
MONITOR.mon_hexb 0xe003 f
MONITOR.non_con_status 0xe006 f
MONITOR.mon_con_in 0xe009 f
MONITOR.mon_con_out 0xe00c f
MONITOR.mon_serial_in 0xe00f f
MONITOR.mon_serial_out 0xe012 f
MONITOR.mon_char_print 0xe015 f
MONITOR.mon_tape_read 0xe018 f
MONITOR.mon_tape_write 0xe01b f
MONITOR.ram_disk_read 0xe01e f
MONITOR.ram_disk_write 0xe021 f
MONITOR.mon_tape_read_ram 0xe024 f
MONITOR.mon_tape_write_ram 0xe027 f
MONITOR.mon_tape_wait 0xe02a f
MONITOR.mon_tape_detect 0xe02d f
MONITOR.read_floppy 0xe030 f
MONITOR.write_floppy 0xe033 f
MONITOR.mon_out_str_z 0xe036 f
MONITOR.m_hot_start 0xe051 f
MONITOR.m_hot_start.fill_video 0xe06c f
MONITOR.m_hot_start.conf_uart 0xe0a7 f
MONITOR.m_hot_start.conf_pic 0xe0ba f
MONITOR.m_out_strz 0xe0f1 f
MONITOR.mgs_system_nf 0xe0fc f
MONITOR.m_sys_halt 0xe111 f
MONITOR.m_con_status 0xe112 f
MONITOR.m_serial_in 0xe11c f
MONITOR.m_con_in 0xe128 f
MONITOR.m_serial_out 0xe13d f
MONITOR.m_char_print 0xe148 f
MONITOR.m_char_print.wait_lp 0xe157 f
MONITOR.m_con_out 0xe163 f
MONITOR.m_con_out_int 0xe16d f
MONITOR.get_esc_param 0xe187 f
MONITOR.esc_no_draw_fn 0xe1c1 f
MONITOR.esc_exit 0xe1c6 f
MONITOR.esc_params_tab 0xe1cb f
MONITOR.esc_handler_tab 0xe1db f
MONITOR.esc_set_beep 0xe1f9 f
MONITOR.esc_set_cursor2 0xe20e f
MONITOR.esc_print_screen 0xe211 f
MONITOR.esc_print_screen.chk_keys 0xe220 f
MONITOR.esc_print_screen.no_keys 0xe22d f
MONITOR.m_print_hor_line 0xe23a f
MONITOR.m_print_hor_line.print_next_col 0xe248 f
MONITOR.m_print_cmd 0xe276 f
MONITOR.m_print_cmd.print_nxt 0xe277 f
MONITOR.m_print_cmd.cmd_end 0xe285 f
MONITOR.m_print_vert_7pix 0xe287 f
MONITOR.cmd_esc_inc_Y2 0xe2a5 f
MONITOR.cmd_esc_set_X0 0xe2a9 f
MONITOR.cmd_esc_set_X 0xe2ae f
MONITOR.cmd_esc_print_col 0xe2b1 f
MONITOR.m_get_7vpix 0xe2b4 f
MONITOR.m_get_7vpix.calc_pix_no 0xe2be f
MONITOR.m_get_7vpix.for_all_pix 0xe2dc f
MONITOR.m_get_7vpix.all_shifted 0xe2e9 f
MONITOR.m_get_7vpix.not_1_1 0xe2f2 f
MONITOR.m_get_7vpix.not_1_2 0xe2fa f
MONITOR.esc_set_palette 0xe2fe f
MONITOR.esp_no_colr 0xe313 f
MONITOR.esc_set_charset 0xe317 f
MONITOR.m_get_glyph 0xe320 f
MONITOR.m_get_glyph.cp_rus 0xe340 f
MONITOR.m_get_glyph.cp_common 0xe344 f
MONITOR.m_print_no_esc 0xe349 f
MONITOR.m_print_no_esc.l1 0xe377 f
MONITOR.m_print_no_esc.l2 0xe381 f
MONITOR.m_print_no_esc.l3 0xe389 f
MONITOR.m_print_no_esc.l4 0xe391 f
MONITOR.m_print_no_esc.l5 0xe396 f
MONITOR.m_print_no_esc.sym_draw 0xe39a f
MONITOR.m_print_no_esc.pne_l7 0xe3a5 f
MONITOR.m_print_no_esc.pne_l8 0xe3aa f
MONITOR.m40_rt 0xe3ee f
MONITOR.m40_wrap_rt 0xe3f9 f
MONITOR.m40_lf 0xe405 f
MONITOR.m40_bksp 0xe40f f
MONITOR.m40_bksp.wrap 0xe41d f
MONITOR.m40_up 0xe421 f
MONITOR.m40_up.up_no_minus 0xe429 f
MONITOR.m20_tab 0xe42b f
MONITOR.calc_addr_40 0xe439 f
MONITOR.calc_addr_40.l1 0xe454 f
MONITOR.calc_addr_40.l2 0xe45a f
MONITOR.m2_lf 0xe464 f
MONITOR.m2_lf.lf_nowr 0xe46e f
MONITOR.m2_lf.cas_l5 0xe47b f
MONITOR.m2_lf.cas_l6 0xe480 f
MONITOR.m2_lf.cas_l7 0xe496 f
MONITOR.m2_lf.cas_l8 0xe49b f
MONITOR.m20_bksp 0xe4ab f
MONITOR.mp_mode_64 0xe4b8 f
MONITOR.mp_mode_64.next_row 0xe4d3 f
MONITOR.m64_rt 0xe4e7 f
MONITOR.m64_lf 0xe4f0 f
MONITOR.scroll_up 0xe4fa f
MONITOR.scroll_up.next_row 0xe512 f
MONITOR.scroll_up.next_col 0xe514 f
MONITOR.m64_bs 0xe524 f
MONITOR.m64_up 0xe52f f
MONITOR.m64_up.no_wrap 0xe537 f
MONITOR.m64_tab 0xe539 f
MONITOR.mp_mode_80 0xe545 f
MONITOR.mp_mode_80.l1 0xe55e f
MONITOR.mp_mode_80.l2 0xe56d f
MONITOR.mp_mode_80.l3 0xe58e f
MONITOR.mp_mode_80.l4 0xe5b3 f
MONITOR.mp_mode_80.l5 0xe5b4 f
MONITOR.mp_mode_80.l6 0xe5c4 f
MONITOR.m80_rt 0xe5cf f
MONITOR.m80_col_wrap 0xe5da f
MONITOR.m80_lf 0xe5de f
MONITOR.m80_bs 0xe5e8 f
MONITOR.m80_bs.wrap 0xe5f6 f
MONITOR.m80_up 0xe5fa f
MONITOR.m80_up.no_wrap 0xe602 f
MONITOR.m80_tab 0xe604 f
MONITOR.calc_addr_80 0xe612 f
MONITOR.mns_l1 0xe62d f
MONITOR.mns_ep_fm_0 0xe633 f
MONITOR.m_clear_screen 0xe639 f
MONITOR.m_clear_screen.fill_scrn 0xe652 f
MONITOR.m_clear_screen.mono_mode 0xe669 f
MONITOR.m_cursor_home 0xe66c f
MONITOR.m_clear_20_rows 0xe679 f
MONITOR.m_clear_20_rows.next_row 0xe683 f
MONITOR.m_clear_20_rows.next_col 0xe688 f
MONITOR.m_draw_cursor 0xe69a f
MONITOR.m_draw_cursor.dc_rt2 0xe6cf f
MONITOR.m_draw_cursor.dc_mid 0xe6d7 f
MONITOR.m_draw_cursor.dc_lt 0xe6dd f
MONITOR.m_draw_cursor.dc_rt1 0xe6e3 f
MONITOR.m_draw_cursor.dc_put 0xe6e6 f
MONITOR.m_draw_cursor.dc_mode_64 0xe703 f
MONITOR.m_draw_cursor.cur_64_next 0xe721 f
MONITOR.m_draw_cursor.dc_mode_80 0xe72f f
MONITOR.m_draw_cursor.dc_1_byte 0xe75e f
MONITOR.m_draw_cursor.dc_2_byte 0xe769 f
MONITOR.m_draw_cursor.dc_80_end 0xe776 f
MONITOR.m_handle_esc_code 0xe77c f
MONITOR.m_handle_control_code 0xe78a f
MONITOR.handle_cc_common 0xe7c4 f
MONITOR.handle_cc_common.handle_cc_mono 0xe7ff f
MONITOR.handle_cc_80x25 0xe833 f
MONITOR.m_beep 0xe85a f
MONITOR.m_bell_cont 0xe86f f
MONITOR.m_bell_wait_tmr1 0xe879 f
MONITOR.m_bell_wait_tmr2 0xe886 f
MONITOR.esc_set_cursor 0xe890 f
MONITOR.esc_set_cursor.mode_40 0xe8bf f
MONITOR.esc_set_cursor.mode_80 0xe8ca f
MONITOR.esc_set_cursor.common 0xe8d2 f
MONITOR.esc_le_24 0xe8df f
MONITOR.esc_set_vmode 0xe8e9 f
MONITOR.esc_set_vmode.set_color_mode 0xe90f f
MONITOR.esc_set_vmode.skip_for_mono_mode 0xe911 f
MONITOR.esc_set_vmode.draw_cursor 0xe91a f
MONITOR.esc_set_vmode.cursor_hide 0xe91e f
MONITOR.esc_set_vmode.cursor_show 0xe928 f
MONITOR.esc_set_color 0xe92f f
MONITOR.m_set_color 0xe932 f
MONITOR.m_print_at_xy 0xe943 f
MONITOR.m_print_at_xy.mode_sp 0xe986 f
MONITOR.m_print_at_xy.out_sp 0xe99b f
MONITOR.m_print_at_xy.next_line 0xe9a2 f
MONITOR.m_print_at_xy.l04 0xe9af f
MONITOR.m_print_at_xy.l05 0xe9b4 f
MONITOR.m_print_at_xy.sprites_en 0xe9e2 f
MONITOR.mode2_exit 0xe9e6 f
MONITOR.co_ex_l08 0xe9ed f
MONITOR.out_no_xor 0xe9f1 f
MONITOR.out_no_xor.l10 0xe9fe f
MONITOR.out_no_xor.l11 0xea03 f
MONITOR.game_sprite_tab 0xea39 f
MONITOR.calc_px_addr 0xeb51 f
MONITOR.esc_draw_fill_rect 0xeb64 f
MONITOR.esc_draw_fill_rect.non_zero_h 0xeb73 f
MONITOR.esc_draw_fill_rect.shift_mask_l 0xeb78 f
MONITOR.esc_draw_fill_rect.shift_mask_r 0xeb8d f
MONITOR.esc_draw_fill_rect.next_line 0xebb7 f
MONITOR.esc_draw_fill_rect.rectangle_xor 0xebc6 f
MONITOR.esc_draw_fill_rect.edf_l6 0xebd5 f
MONITOR.esc_draw_fill_rect.next_8px 0xebdf f
MONITOR.esc_draw_fill_rect.w_ne_0 0xebe0 f
MONITOR.esc_draw_fill_rect.r_mask 0xebf6 f
MONITOR.esc_draw_fill_rect.next_full 0xebfc f
MONITOR.esc_draw_fill_rect.complete 0xec0b f
MONITOR.esc_paint 0xec18 f
MONITOR.esc_paint.l1 0xec57 f
MONITOR.ep_fm_0 0xec8b f
MONITOR.ep_task_end 0xec9a f
MONITOR.ep_l4 0xecb5 f
MONITOR.ep_l5 0xecbd f
MONITOR.ep_l6 0xecc5 f
MONITOR.ep_f_fast 0xecd7 f
MONITOR.ep_l8 0xece5 f
MONITOR.ep_l9 0xed1d f
MONITOR.ep_l10 0xed2c f
MONITOR.ep_l11 0xed3d f
MONITOR.paint_find_next_right 0xed77 f
MONITOR.paint_find_next_right.l1 0xed84 f
MONITOR.paint_find_next_right.l2 0xed90 f
MONITOR.paint_find_next_left 0xed9a f
MONITOR.paint_find_next_left.l1 0xeda7 f
MONITOR.paint_find_next_left.l2 0xedb3 f
MONITOR.ep_l12 0xedbd f
MONITOR.ep_l13 0xedd6 f
MONITOR.ep_l14 0xede8 f
MONITOR.ep_l15 0xedf1 f
MONITOR.ep_l16 0xedfa f
MONITOR.paint_find_right 0xedfd f
MONITOR.paint_find_right.in_byte 0xee0a f
MONITOR.paint_find_left 0xee18 f
MONITOR.paint_find_left.in_byte 0xee24 f
MONITOR.get_pixel 0xee32 f
MONITOR.get_pixel.bit1_set 0xee48 f
MONITOR.get_pixel.bit2_set 0xee57 f
MONITOR.get_pixel.bit12_set 0xee5f f
MONITOR.paint_task 0xee67 f
MONITOR.paint_task.lmp_mask 0xee7e f
MONITOR.paint_task.rmp_mask 0xee97 f
MONITOR.paint_task.lmi_mask 0xeea3 f
MONITOR.paint_task.rmi_mask 0xeeac f
MONITOR.paint_exit 0xeec6 f
MONITOR.draw_line_h 0xeed1 f
MONITOR.draw_line_h.next_byte 0xeedc f
MONITOR.draw_line_h.width_ne0 0xeedd f
MONITOR.draw_line_h.r_mask 0xeef5 f
MONITOR.draw_line_h.full_8 0xeefb f
MONITOR.draw_line_h.complete 0xef06 f
MONITOR.esc_draw_line 0xef0b f
MONITOR.esc_draw_line.x1_le_x2 0xef1b f
MONITOR.esc_draw_line.pos_height 0xef2b f
MONITOR.esc_draw_line.next_16 0xef45 f
MONITOR.esc_draw_line.edl_l4 0xef51 f
MONITOR.esc_draw_line.edl_l5 0xef54 f
MONITOR.esc_draw_line.roll_l 0xef67 f
MONITOR.esc_draw_line.edl_l7 0xef6e f
MONITOR.esc_draw_line.next_up 0xef89 f
MONITOR.esc_draw_line.next_down 0xef9f f
MONITOR.esc_draw_line.is_last 0xefb5 f
MONITOR.esc_draw_line.edl_l11 0xefc3 f
MONITOR.esc_draw_line.width0 0xefcb f
MONITOR.esc_draw_line.edl_l13 0xefd1 f
MONITOR.esc_draw_line.next_row_up 0xefe5 f
MONITOR.esc_draw_line.next_row_down 0xeffb f
MONITOR.close_vram_ret 0xf011 f
MONITOR.height0 0xf016 f
MONITOR.height0.len_ne0 0xf01e f
MONITOR.height0.edl_l19 0xf023 f
MONITOR.height0.next_col 0xf033 f
MONITOR.height0.edl_l21 0xf048 f
MONITOR.esc_draw_dot 0xf052 f
MONITOR.edd_l1 0xf05b f
MONITOR.edd_ep_fm_0 0xf084 f
MONITOR.edd_ep_task_end 0xf09d f
MONITOR.esc_picture 0xf0a4 f
MONITOR.pict_sub1 0xf0d6 f
MONITOR.pict_clr 0xf0f3 f
MONITOR.ehd_l1 0xf104 f
MONITOR.m_fn_39 0xf10f f
MONITOR.m_fn_39.l1 0xf12e f
MONITOR.m_fn_39.l2 0xf148 f
MONITOR.m_fn_39.l3 0xf15f f
MONITOR.get_image_hdr 0xf177 f
MONITOR.esc_get_put_image 0xf1b5 f
MONITOR.get_image 0xf1e1 f
MONITOR.get_image.next_row 0xf1e3 f
MONITOR.get_image.l2 0xf1f2 f
MONITOR.put_image 0xf201 f
MONITOR.put_image.next_row 0xf203 f
MONITOR.put_image.l2 0xf213 f
MONITOR.img_task_end 0xf21e f
MONITOR.fn39_sub2 0xf223 f
MONITOR.fn39_sub2.l1 0xf224 f
MONITOR.fn39_sub2.l2 0xf225 f
MONITOR.fn39_sub2.l3 0xf233 f
MONITOR.fn39_sub2.l4 0xf238 f
MONITOR.fn39_sub2.l5 0xf245 f
MONITOR.fn39_sub2.l6 0xf24a f
MONITOR.gih_rt 0xf266 f
MONITOR.gih_rt.l1 0xf289 f
MONITOR.gih_rt.l2 0xf28d f
MONITOR.gih_rt.l3 0xf291 f
MONITOR.gih_bs 0xf2bd f
MONITOR.gih_bs.l1 0xf2dd f
MONITOR.gih_bs.l2 0xf2e9 f
MONITOR.gih_bs.l3 0xf2ed f
MONITOR.gih_ctrl_z 0xf319 f
MONITOR.gih_ctrl_z.l1 0xf32e f
MONITOR.gih_ctrl_z.l2 0xf332 f
MONITOR.gih_ctrl_z.l3 0xf345 f
MONITOR.gih_ctrl_z.l4 0xf34a f
MONITOR.gih_ctrl_z.l5 0xf35a f
MONITOR.gih_up 0xf368 f
MONITOR.gih_up.l1 0xf378 f
MONITOR.gih_up.l2 0xf390 f
MONITOR.gih_up.l3 0xf394 f
MONITOR.gih_up.l4 0xf3a7 f
MONITOR.gih_up.l5 0xf3ac f
MONITOR.gih_up.l6 0xf3bc f
MONITOR.pict_sub2 0xf3ca f
MONITOR.pict_sub2.l1 0xf3f2 f
MONITOR.pict_sub2.l2 0xf3f7 f
MONITOR.pict_sub2.l3 0xf3fb f
MONITOR.pict_sub2.l4 0xf426 f
MONITOR.mov_hl_bc 0xf43b f
MONITOR.mov_hl_bc.next 0xf442 f
MONITOR.esc_draw_circle 0xf44c f
MONITOR.esc_draw_circle.l1 0xf469 f
MONITOR.esc_draw_circle.l2 0xf480 f
MONITOR.esc_draw_circle.l3 0xf4a2 f
MONITOR.dc_draw_8px 0xf4ab f
MONITOR.dc_aspect_ratio_1 0xf4c7 f
MONITOR.dc_aspect_ratio_1.dc_ax_ne0 0xf4d7 f
MONITOR.dc_aspect_ratio_1.dc_ay_ne0 0xf4e0 f
MONITOR.dc_aspect_ratio2 0xf4e7 f
MONITOR.dc_aspect_ratio2.dc_ax_ne0 0xf4f7 f
MONITOR.dc_aspect_ratio2.dc_ay_ne0 0xf500 f
MONITOR.dc_mul_e_h 0xf507 f
MONITOR.dc_mul_e_h.l1 0xf50f f
MONITOR.dc_mul_e_h.l2 0xf514 f
MONITOR.dc_mul_e_h.l3 0xf519 f
MONITOR.dc_mul_e_h.l4 0xf51e f
MONITOR.dc_mul_e_h.l5 0xf523 f
MONITOR.dc_mul_e_h.l6 0xf528 f
MONITOR.dc_mul_e_h.l7 0xf52d f
MONITOR.dc_mul_e_h.l8 0xf532 f
MONITOR.dc_draw_4px_bc 0xf534 f
MONITOR.dc_draw_4px_bc.l1 0xf540 f
MONITOR.dc_draw_4px_bc.l2 0xf54c f
MONITOR.dc_draw_4px_bc.l3 0xf558 f
MONITOR.dc_draw_4px_cb 0xf563 f
MONITOR.dc_draw_4px_cb.l1 0xf56f f
MONITOR.dc_draw_4px_cb.l2 0xf57b f
MONITOR.l3 0xf587 f
MONITOR.dc_put_pixel 0xf592 f
MONITOR.dc_put_pixel.roll 0xf59a f
MONITOR.m_font_cp0 0xf5bc f
MONITOR.m_font_cp1 0xf85c f
MONITOR.conv_nibble 0xfa1c f
MONITOR.m_hexb 0xfa26 f
MONITOR.out_hex 0xfa2f f
MONITOR.m_tape_write_ram2 0xfa36 f
MONITOR.m_tape_write_ram2.cl_stack 0xfa3b f
MONITOR.m_tape_write_ram2.nxt_blk 0xfa5d f
MONITOR.twr2_delay 0xfa73 f
MONITOR.twr2_delay.delay 0xfa76 f
MONITOR.m_tape_read_ram2 0xfa7d f
MONITOR.m_tape_read_ram2.srch_first 0xfa88 f
MONITOR.m_tape_read_ram2.rd_next 0xfaa6 f
MONITOR.m_tape_read_ram2.not_found 0xfac5 f
MONITOR.m_tape_read_ram2.rd_error 0xfacc f
MONITOR.m_tape_read_ram2.inv_id 0xfae1 f
MONITOR.m_tape_read_ram2.err_ubi 0xfaed f
MONITOR.m_tape_read_ram2.err_ibu 0xfaf5 f
MONITOR.m_tape_read_ram2.end 0xfaf6 f
MONITOR.out_hexw 0xfafd f
MONITOR.msg_no_start_rec 0xfb08 f
MONITOR.msg_checksum 0xfb18 f
MONITOR.msg_sequence 0xfb22 f
MONITOR.msg_ibg 0xfb2c f
MONITOR.msg_break 0xfb30 f
MONITOR.me_out_strz 0xfb36 f
MONITOR.m_ramdisk_read 0xfb43 f
MONITOR.m_ramdisk_read.read 0xfb55 f
MONITOR.m_ramdisk_write 0xfb6d f
MONITOR.m_ramdisk_write.wr_byte 0xfb7f f
MONITOR.m_tape_write 0xfb97 f
MONITOR.m_tape_write.l1 0xfbae f
MONITOR.m_tape_write.set_lvl 0xfbc0 f
MONITOR.m_tape_write.l2 0xfbd0 f
MONITOR.m_tape_write.next_byte 0xfbee f
MONITOR.m_tape_write.wait_end 0xfc00 f
MONITOR.m_tape_wr_byte 0xfc0e f
MONITOR.m_tape_wr_byte.get_bit 0xfc15 f
MONITOR.m_tape_wr_byte.wait_t 0xfc1b f
MONITOR.m_tape_wr_byte.out_bit 0xfc39 f
MONITOR.m_tape_wr_byte.bit_hi 0xfc41 f
MONITOR.m_tape_wr_byte.out_bit_hi 0xfc5f f
MONITOR.m_tape_read 0xfc67 f
MONITOR.m_tape_read.wait_3_changes 0xfc79 f
MONITOR.m_tape_read.wait_4th_change 0xfc8a f
MONITOR.m_tape_read.wait_f5_marker 0xfc99 f
MONITOR.m_tape_read.read_next_b 0xfcbd f
MONITOR.m_tape_read.checksum_ok 0xfcd6 f
MONITOR.m_tape_read.return 0xfcd7 f
MONITOR.m_tape_read.err_read_blk 0xfcda f
MONITOR.m_tape_read.err_read_id 0xfcde f
MONITOR.m_tape_read.key_pressed 0xfce3 f
MONITOR.m_tape_read_byte 0xfcee f
MONITOR.m_tape_read_byte.next_bit 0xfcf1 f
MONITOR.m_tape_read_byte.ret_err 0xfd06 f
MONITOR.m_read_tape_bit 0xfd08 f
MONITOR.m_read_tape_bit.wait_change 0xfd0d f
MONITOR.read_tape_bit_kbd 0xfd2b f
MONITOR.read_tape_bit_kbd.wait_change 0xfd30 f
MONITOR.read_tape_bit_kbd.key_pressed 0xfd55 f
MONITOR.m_tape_wait 0xfd58 f
MONITOR.m_tape_wait.wait_t4 0xfd5c f
MONITOR.m_tape_wait.wait_next_2ms 0xfd62 f
MONITOR.m_tape_wait.wait_tmr_key 0xfd6d f
MONITOR.m_tape_wait.wait_no_rst4 0xfd86 f
MONITOR.m_tape_wait.key_pressed 0xfd8d f
MONITOR.m_tape_blk_detect 0xfd95 f
MONITOR.fdc_unload_head 0xfd9e f
MONITOR.fdc_unload_head.wait_no_busy 0xfda8 f
MONITOR.fdc_unload_head.tr0_ok 0xfdba f
MONITOR.fdc_unload_head.b1 0xfdc9 f
MONITOR.m_select_drive 0xfdd1 f
MONITOR.m_select_drive.sel_A 0xfddf f
MONITOR.m_select_drive.sel_B 0xfde1 f
MONITOR.m_select_drive.dpar_a 0xfdf6 f
MONITOR.m_select_drive.dpar_b 0xfdf9 f
MONITOR.m_select_drive.l_le 0xfe15 f
MONITOR.delay_136uS 0xfe24 f
MONITOR.delay_b 0xfe26 f
MONITOR.delay_1.4mS 0xfe2b f
MONITOR.m_read_floppy 0xfe30 f
MONITOR.m_write_floppy 0xfe43 f
MONITOR.m_start_seek_track 0xfe56 f
MONITOR.m_start_floppy 0xfe5f f
MONITOR.m_start_floppy.need_m_start 0xfe6b f
MONITOR.m_start_floppy.wait_motor 0xfe76 f
MONITOR.m_start_floppy.wait_rdy1 0xfe7d f
MONITOR.m_start_floppy.long_delay 0xfe8f f
MONITOR.m_start_floppy.mst_exi 0xfe95 f
MONITOR.fdc_init 0xfe97 f
MONITOR.m_fdc_seek_trk 0xfea3 f
MONITOR.m_fdc_seek_trk.drv_b 0xfebc f
MONITOR.m_fdc_seek_trk.cmn 0xfecd f
MONITOR.m_fdc_seek_trk.l1 0xfef5 f
MONITOR.m_fdc_seek_trk.l2 0xff06 f
MONITOR.m_fdc_seek_trk.l3 0xff1d f
MONITOR.m_fdc_seek_trk.l4 0xff20 f
MONITOR.m_fdc_write_bytes 0xff26 f
MONITOR.m_fdc_write_bytes.w_next 0xff29 f
MONITOR.m_fdc_read_c_bytes 0xff37 f
MONITOR.m_fdc_read_c_bytes.l1 0xff3d f
MONITOR.m_fdc_read_c_bytes.l2 0xff3f f
MONITOR.fdc_check_status 0xff4b f
MONITOR.fdc_ret 0xff55 f
MONITOR.filler1 0xff56 f
MONITOR.LAST 0xff57 l
MONITOR.CODE_SIZE 0x1f57 l
MONITOR.FILL_SIZE 0xa9 l
MONITOR.FILLER 0xff57 f

5597
MON_r8_bedc54ad/monitor.asm Normal file

File diff suppressed because it is too large Load Diff

49
MON_r8_bedc54ad/ram.inc Normal file
View File

@ -0,0 +1,49 @@
; =======================================================
; Ocean-240.2
;
; RAM area at address: 0x0000 - 0x0100, used by CP/M and
; HW-Monitor
; By Romych 2026-02-03
; =======================================================
IFNDEF _RAM
DEFINE _RAM
MODULE RAM
@warm_boot EQU 0x0000 ; Jump warm_boot (Restart)
@warm_boot_addr EQU 0x0001 ; address of warm boot entry point
@iobyte EQU 0x0003 ; Input/Output mapping
@cur_user_drv EQU 0x0004 ; [7:4] - curent user, [3:0] - current drive
@jp_bdos_enter EQU 0x0005 ; Jump bdos (CALL 5 to make CP/M requests)
@bdos_ent_addr EQU 0x0006 ; addres of BDOS entry point
@RST1 EQU 0x0008
@RST1_handler_addr EQU 0x0009
;RST2 EQU 0x0010
;RST3 EQU 0x0018
;RST4 EQU 0x0020
;RST5 EQU 0x0028
;RST6 EQU 0x0030
;RST7 EQU 0x0038
;reserve1 EQU 0x003b
@bios_var0 EQU 0x0040 ; 0xaa - bios init r8
@bios_var1 EQU 0x0041 ; 0xaa - bios init r8
@bios_var2 EQU 0x0042 ; 0x00 - bios init r8
@bios_var3 EQU 0x0043 ; 0xff - bios init r8
@interleave_0 EQU 0x0044
;reserve2 EQU 0x0050
@fcb1 EQU 0x005c ; Default FCB, 16 bytes
@fcb2 EQU 0x006c
;NMI_ISR EQU 0x0066
@dma_buffer EQU 0x0080 ; Default "DMA" 128 bytes buffer
@p_cmd_line_len EQU 0x0080 ; command line character count
@p_cmd_line EQU 0x0081 ; command line buffer
@fcb_ra_record_num EQU 0x00a1
@bios_stack EQU 0x0100
@tpa_start EQU 0x0100 ; start of program
@video_ram EQU 0x4000
ENDMODULE
ENDIF

View File

@ -1,10 +0,0 @@
*.labels
*.obj
*.OBJ
*.bin
*.tmp
tmp/
build/
*.lst
*.sld