;*********************************************************************************
;12.10.2024
;Altair-Dos version 4.2t
;
;- упразднен флаг компиляции Z80CARD2
;  equ	0				; 1 = use hw interrupts 50 Hz, enableds on port 
;					    ; 0FBh bit 6 = 1
;						; 0 = Z80 по схеме московское турбо из журнала Радио 
;						; без прерываний, 
;						; звук ei/di
;- добавлен автодетект платформы Орион ПРО 
;  (по доступности ячейки ОЗУ по адресу FFFF на запись)
;- автодетект работоспособности хардварных прерываний, при отсутствии прерываний 
;  переключение на софтовый
;  вызов обработчика хардварных прерываний в цикле опроса статуса клавиатуры
;  bios1.mac
;*********************************************************************************
	.Z80

DEBUG		equ     1       ; add debug info to output binaries
IDEPRO  	equ     0       ; 1=OrionPRO IDE/RTC ide ports, 0=8255 PPA ports
BOOTFDD		equ		0		; 1=Use FDD bootsector, 0=use IDE/SD/ROM bootsector
VERBOSE 	equ		1		; 1=print some startup messages and perform complete memory test
INITSD  	equ     1       ; init SDCard while boot - WTF ?
timer1s_	equ		7		;константа для таймера условной 1/50 секунды
;
	ASEG

WORKPAGE	EQU	1			;Банк ОЗУ для основного тела ОС
TPAPAGE  	EQU	2			;Банк ОЗУ для CP/M программ

; ================== BOOT.MAC ============================================================
;СТАДИЯ ЗАГРУЗКИ 0
;MBOOT.ORD загружает:
; boot сектор в 					WORKPAGE:0000h-00FFh (размер 100h)
; каталоги в 						WORKPAGE:0100h-01FFh (размер 100h)
; даты/время файлов в 				WORKPAGE:0200h-04FFh (размер 300h)
; и передает управление на адрес 	WORKPAGE:0000h (boot сектор)	 
; на СТАДИЯ ЗАГРУЗКИ 1
;
;СТАДИЯ ЗАГРУЗКИ 1
;код boot сектора загружает
;тело ОС в							WORKPAGE:SYSLOAD (0A5D3h) , размер CODESIZE (04854h)
;SYSLOAD + CODESIZE = 0a5d3h + 04854h = 0EF27h ; адрес конца тела ОС, загруженного с диска 
;и передает управление на адрес		WORKPAGE:COLDSTART (0EB75h)
;в BIOS2.MAC на СТАДИЯ ЗАГРУЗКИ 2 						
INCLUDE BOOT    ; BOOT - boot FDD (native) or boot IDE/SD (via Monitor F834h subroutine)
; =========================================================================================

INCLUDE BDOS0   ; BDOS - Extended Memory Manager functions
INCLUDE BDOS1   ; BDOS - standard
INCLUDE BDOS2   ; BDOS - extended disk functions (filedates, label, usernames)
INCLUDE BIOSSD  ; BIOS - SD card (N8VEM JuhaSD & MSX SDcard V1 schemes)
INCLUDE BIOSIDE ; BIOS - IDE drives (8255 PPA scheme)
INCLUDE BIOS0   ; BIOS - devices low level access routines

; ================== BIOS1.MAC ============================================================
; СТАДИЯ ЗАГРУЗКИ 3
; запускаемся с TPAPAGE:COLD (пришли из BIOS1.MAC)
; c метки TPAPAGE:COLD (0D081h)начинается адрес части кода ОС, скопированный с WORKPAGE:COLD в
; TPA:COLD, размер WORKPAGE:COLDSTART (0EB75h) - WORKPAGE:COLD (0D081h) = 01AF4h

; загружаем DRIVER.SYS в TPA:00100h
; запускаем DRIVER.SYS c TPA:00100h
; включаем прерывания
; обрабатываем CONFIG.SYS
; переходим на теплый старт ОС
; MMTEST (тест ОЗУ с созданием карты памяти) находится также
; в файле BIOS1.MAC, но вызывается из файла BIOS2.MAC после завершения
; процедур инициализации железа. MMTEST использует в своей работе
; п/п TESTMEM (безвредный тест ОЗУ), располагающийся в файле BIOS2.MAC 
; практически все место, занятое кодом из файла bios1.mac,
; потом используется под буфер дисковода (801h) байт 
; (надеюсь этот буфер в странице WORKPAGE)
; Адрес буфера DISKBUF : равен адресу MMTEST: ; здесь тест ОЗУ
INCLUDE BIOS1   ; BIOS - SYSTEM COLD STARTUP (загрузка DRIVER.SYS,
				; memory test, config.sys)
; =========================================================================================

INCLUDE CCP0    ; console command processor 
INCLUDE CCP1    ; console command processor - extensions

; ================== BIOS2.MAC ============================================================
; СТАДИЯ ЗАГРУЗКИ 2
; пришли из boot loadera из BOOT.MAC
; WORKPAGE:COLDSTART: CALL	COLDINIT
; инициализация железа (порты, IDE, SD и т.п)
; потом копируем часть кода ОС (эмуляция CP/M в странице TPA)
; c метки WORKPAGE:COLD (0D081h) в TPA:COLD(0D081h), размер COLDSTART (0EB75h) - COLD (0D081h) = 01AF4h
; передаем управление в TPAPAGE:coldbeg=COLD(0D081h)	; находится в BIOS1.MAC
; на СТАДИЯ ЗАГРУЗКИ 3
INCLUDE BIOS2   ; BDOS & BIOS wrapper, TTY, interbank (multiple memory pages) service routines
; =========================================================================================

INCLUDE DEBUG	; values for debug

	END