mirror of
https://github.com/Tolik-Trek/Crazy-Blaster.git
synced 2026-06-15 17:41:41 +03:00
245 lines
4.5 KiB
NASM
245 lines
4.5 KiB
NASM
; ‚室 ç¥à¥§ 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
|
||
; |