Crazy-Blaster/Crazy BIOS/rom/ZX/ZX_FUNC.ASM
Anatoliy Belyanskiy ace6b0904b First init
2024-07-29 01:59:31 +10:00

245 lines
4.5 KiB
NASM
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; ‚室 ç¥à¥§ USR 15600
ASSERT $ = #C0, "Error with RET_FROM_BIOS_TO_BASIC48 address!!!"
RET_FROM_BIOS_TO_BASIC48:
CALL CH_2
CALL COMAND_LINE ; <E2809A>Ž<C5BD><EFBFBD>ˆ… ŠŽŒ€<C592>, …‘‹ˆ …‘’œ
; ‚室 ¡¥§ ª®¬ ­¤ë
JP SW_ROM_1 ; އ<E280A1> << MAIN MENU >>
;-----------------------------------------------------------------------;
;
;
;----------------------------[ ??????????? ]----------------------------;
; TURBO_OFF:
; LD A,D_TBOFF
; OUT (SYS_PORT.ON),A
; RET
;
; TURBO_ON:
; LD A,D_TBON
; OUT (SYS_PORT.ON),A
; RET
;
; JP_HL: JP (HL)
;
;PRINT_LINE:
; LD A,(HL)
; INC HL
; CP 0FFh
; RET Z
; RST 10H
; JR PRINT_LINE
;
; JP RESET_128
;-----------------------------------------------------------------------;
;
;-----------------------------------------------------------------------;
; ******* SERVICE *******
;-----------------------------------------------------------------------;
;------[ „…˜ˆ<CB86>ˆŸ ŠŽŒ€<C592><EFBFBD>މ <E28098>ŽŠˆ,<2C><EFBFBD>…„€<E2809E><E282AC>މ „‹Ÿ "EXPANSION" ]-------;
COMAND_LINE:
LD HL,(#5C5D) ;!HARDCODE CH_ADR
COMAND_LOOP:
LD A,(HL)
INC HL
CP ":"
JR Z,COMAND_L1
CP ZX_Char.carriage_return
JR NZ,COMAND_LOOP
RET
COMAND_L1:
LD A,(HL)
CP ZX_Token.rem
RET NZ
INC HL
COMAND_OK: ; Ž<><C5BD><EFBFBD>“†…<E280A0>€ ŠŽŒ€<C592>„€ „‹Ÿ 'expansion'
LD A,(HL)
INC HL
CP ':'
JP Z,MENU_S1
CP ZX_Char.carriage_return
JP Z,MENU_S1
CP 'I'
JR Z,COMAND_ISD
CP 'i'
JR Z,COMAND_ISD
CP 'T'
JR Z,TASK_SWITCH
CP 't'
JR Z,TASK_SWITCH
DEC HL
POP BC
JP BASIC_MENU
MENU_S1:
POP BC
CALL SERVICE
JP SW_ROM_1
COMAND_ISD:
LD A,(HL)
INC HL
CP 'S'
JP Z,COMAND_ISD2
CP 's'
JP Z,COMAND_ISD2
RET
COMAND_ISD2:
POP BC
CALL ISDOS
JP SW_ROM_1
TASK_SWITCH:
; *** ‘®åà ­¨âì § ¤ çã ***
PUSH IY
PUSH IX
PUSH AF
PUSH BC
PUSH DE
PUSH HL
EXX
EX AF,AF'
PUSH AF
PUSH BC
PUSH DE
PUSH HL
LD A,R
PUSH AF
LD A,I
PUSH AF
LD A,(HL)
RLCA
RLCA
RLCA
RLCA
AND #30 ; ­®¢ ï § ¤ ç  0..3
LD C,A
IN A,(SLOT3)
LD B,A ; 3-ï áâà ­¨æ  ⥪ã饩 § ¤ ç¨
LD A,SYS_PAGE
OUT (SLOT3),A
LD IX,SYS_PAGE.TASK_DATA ; ¤ ­­ë¥ § ¤ ç
LD E,(IX) ; áâ à ï § ¤ ç 
LD D,0
ADD IX,DE ; ¤ ­­ë¥ ⥪ã饩 § ¤ ç¨
LD E,16
ADD IX,DE ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
LD (IX+1),B ; á®åà ­¨âì áâà ­¨æã 3
LD HL,0
ADD HL,SP
LD (IX+2),L ; á®åà ­¨âì á⥪ § ¤ ç¨
LD (IX+3),H
SET 0,(IX) ; ãáâ ­®¢¨âì ä« £ á®åà ­¥­­®á⨠⥪ã饩 § ¤ ç¨
RES 1,(IX) ; ãáâ ­®¢¨âì ä« £, çâ® § ¤ ç  ¯®ª¨­ãâ 
LD IX,SYS_PAGE.TASK_DATA
LD E,C
LD D,0
ADD IX,DE ; ­®¢ ï § ¤ ç 
LD E,16
ADD IX,DE ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
BIT 1,(IX)
; JR NZ,TASK_IN_WORK ; § ¤ ç  ¢ à ¡®â¥ ??? ­¥¢¥à­®¥ § ¢¥à襭¨¥
; á¡à á뢠âì ¨«¨ ¯à®áâ® ¢®§¢à é âìáï
BIT 0,(IX) ; ¡ë«  á®åà ­¥­ /­¥â
JR NZ,TASK_SET ; § ¤ ç  áãé¥áâ¢ã¥â
; § ¤ ç¨ ­¥ ¡ë«®!
LD IX,SYS_PAGE.TASK_DATA
LD A,C ; § ¤ ç 
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
JP SPECTRUM_TASK ; § ¯ãáâ¨âì ­®¢ãî § ¤ çã!
; ¨ ¯®ª  ¯®ä¨£ à á¯à¥¤¥«¥­¨¥ ¯ ¬ïâ¨!
TASK_SET:
LD IX,TASK_RESTORE
LD A,C
EXX
JP INIT_PAGES ; ¯¥à¥ª«îç¨âì ¢á¥ áâà ­¨æë!
TASK_RESTORE:
EXX
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,C
LD IX,SYS_PAGE.TASK_DATA
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
LD E,A
LD D,0
ADD IX,DE ; ­®¢ ï § ¤ ç 
LD E,16
ADD IX,DE
LD L,(IX+2) ; ¢á¯®¬­¨âì á⥪
LD H,(IX+3)
LD SP,HL
LD A,(IX+1) ; ¢á¯®¬­¨âì âà¥âìî áâà ­¨æã
OUT (SLOT3),A
POP AF ; ¢®ááâ ­®¢¨âì
LD I,A
POP AF
LD R,A
POP HL
POP DE
POP BC
POP AF
EX AF,AF'
EXX
POP HL
POP DE
POP BC
POP AF
POP IX
POP IY
; ¢¥à­ãâìáï ¢ § ¤ çã
NO_TASK:
POP BC
JP SW_ROM_1
; 259F - ADRESS BASIC128 - MAIN_MENU
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
; *** UTILITES ***
;-----------------------------------------------------------------------;
; C_0030: ; ¯®«ãç¨âì à ¡ ®¡«
; CALL_48X 0030h
; RET
C_19E8: ; ®ç¨áâ¨âì à ¡ ®¡«
CALL_48X #19E8 ;!HARDCODE
RET
C_1655: ; ¯®«ãç¨âì ¯à®áâà ­á⢮
CALL_48X #1655 ;!HARDCODE
RET
CLS:
C_0D6B: CALL_48 #0D6B ;!HARDCODE
RET
CH_2: LD A,2
C_1601: ; OPEN CHANEL
CALL_48 #1601 ;!HARDCODE
RET
;