Login

Subversion Repositories NedoOS

Rev

Rev 917 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

;╨Ч╨░╨│╤А╤Г╨╖╨║╨░/╨╖╨░╨┐╨╕╤Б╤М ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╤П ╨╕╨│╤А╤Л

;╨Ч╨░╨│╤А╤Г╨╖╨║╨░ ╨╛╤В╨╗╨╛╨╢╨╡╨╜╨╜╨╛╨│╨╛ ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╤П
LOAD ;-> GAME
       if 1==1
        ld a,PG_MAP
        call setpg
        ld de,savefn
        OS_OPENHANDLE
        push bc      
        ld de,0xc000;VIDEOS ;0x9000 ╤Б╨╡╨╣╤З╨░╤Б ╨╛╨▒╨╝╨╡╨╜╤П╨╜╨╛
        LD hl,0x3000
        OS_READHANDLE
        pop bc ;b=handle
        push bc
        ld de,VARS
        LD hl,0x600
        OS_READHANDLE
        pop bc ;b=handle
        OS_CLOSEHANDLE

        LD HL,MUSNUM
        DEC (HL) ;???
       else ;TR-DOS
;╨Ш╤Й╨╡╨╝ ╤Д╨░╨╣╨╗
        CALL FILE
        LD C,#18
        CALL TRDOS
        JP NZ,ERROR
        LD C,10
        CALL TRDOS
        LD A,C
        INC C
        JP Z,ERROR ;╨Э╨╡╤В ╤Д╨░╨╣╨╗╨░
;╨Т╤Л╤Б╤З╨╕╤В╤Л╨▓╨░╨╡╨╝ ╨░╨┤╤А╨╡╤Б ╤Д╨░╨╣╨╗╨░ (╤Б╨╡╨║╤В╨╛╤А,╨┤╨╛╤А╨╛╨╢╨║╨░)
        LD C,8
        CALL TRDOS
        LD A,(#5CDD+13)
        CP 57 ;╤А╨░╨╖╨╝╨╡╤А ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╤П ╨▓ ╤Б╨╡╨║╤В╨╛╤А╨░╤Е
        JP NZ,ERROR
        LD DE,(#5CDD+14)
;╨б╤З╨╕╤В╤Л╨▓╨░╨╡╨╝ ╨║╨░╤А╤В╤Г ╨╕ ╨╝╨░╤Б╤Б╨╕╨▓
        LD HL,VIDEOS
        LD BC,#3005
        CALL TRDOS
        JP NZ,ERROR ;╨╛╤И╨╕╨▒╨║╨░
;╨б╤З╨╕╤В╤Л╨▓╨░╨╡╨╝ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╨╡
        LD DE,(#5CF4)
        LD HL,VARS
        LD BC,#0605
        CALL TRDOS
        JP NZ,ERROR ;╨╛╤И╨╕╨▒╨║╨░
;╨б╤З╨╕╤В╤Л╨▓╨░╨╡╨╝ ╤Б╨┐╤А╨░╨╣╤В ╨┤╨╜╤П/╨╜╨╛╤З╨╕
;      LD A,PG_VIEW
        CALL PAGE_PG_VIEW
        LD DE,(#5CF4)
        LD HL,NG
        LD BC,#0305
        CALL TRDOS
        JP NZ,ERROR ;╨╛╤И╨╕╨▒╨║╨░
       
        ld a,(...)
        ld (daynightphase),a
       endif
        xor a
        ld (DAY_NGT),a ;╨╛╨▒╨╜╨╛╨▓╨╕╤В╤М ╤Б╨┐╤А╨░╨╣╤В ╨┤╨╜╤П ╨╕ ╨╜╨╛╤З╨╕ ╤Б╤А╨░╨╖╤Г
       
        JP GAME

;╨б╨╛╤Е╤А╨░╨╜╨╡╨╜╨╕╨╡ ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╤П
SAVE
       if 1==1
        ld a,PG_MAP
        call setpg
        ld de,savefn
        OS_CREATEHANDLE
        push bc      
        ld de,0xc000;VIDEOS ;0x9000 ╤Б╨╡╨╣╤З╨░╤Б ╨╛╨▒╨╝╨╡╨╜╤П╨╜╨╛
        LD hl,0x3000
        OS_WRITEHANDLE
        pop bc ;b=handle
        push bc
        ld de,VARS
        LD hl,0x600
        OS_WRITEHANDLE
        pop bc ;b=handle
        OS_CLOSEHANDLE
       else ;TR-DOS
;╨Ш╤Й╨╡╨╝ ╤Д╨░╨╣╨╗
        LD A,PG_MAP
        CALL PAGE
        CALL FILE
        LD C,#18
        CALL TRDOS
        JP NZ,ERROR2
        LD C,10
        CALL TRDOS
        LD A,C
        INC C
        JR Z,NOFILE
;╨Т╤Л╤Б╤З╨╕╤В╤Л╨▓╨░╨╡╨╝ ╨░╨┤╤А╨╡╤Б ╤Д╨░╨╣╨╗╨░ (╤Б╨╡╨║╤В╨╛╤А,╨┤╨╛╤А╨╛╨╢╨║╨░)
        LD C,8
        CALL TRDOS
        LD A,(#5CDD+13)
        CP 57 ;╤А╨░╨╖╨╝╨╡╤А ╤Б╨╛╤Б╤В╨╛╤П╨╜╨╕╤П ╨▓ ╤Б╨╡╨║╤В╨╛╤А╨░╤Е
        JP NZ,ERROR2
        LD DE,(#5CDD+14)
;╨Ч╨░╨┐╨╕╤Б╤Л╨▓╨░╨╡╨╝ ╨║╨░╤А╤В╤Г ╨╕ ╨╝╨░╤Б╤Б╨╕╨▓
        LD HL,MAP
        LD BC,#3006
        CALL TRDOS
        JP NZ,ERROR2 ;╨╛╤И╨╕╨▒╨║╨░
;╨Ч╨░╨┐╨╕╤Б╤Л╨▓╨░╨╡╨╝ ╨┐╨╡╤А╨╡╨╝╨╡╨╜╨╜╤Л╨╡
        LD DE,(#5CF4)
SAVE2   LD HL,VARS
        LD BC,#0606
        CALL TRDOS
        JP NZ,ERROR2 ;╨╛╤И╨╕╨▒╨║╨░
;╨Ч╨░╨┐╨╕╤Б╤Л╨▓╨░╨╡╨╝ ╤Б╨┐╤А╨░╨╣╤В ╨┤╨╜╤П/╨╜╨╛╤З╨╕
;      LD A,PG_VIEW
        CALL PAGE_PG_VIEW
        LD DE,(#5CF4)
        LD HL,NG
        LD BC,#0306
        CALL TRDOS
        JP NZ,ERROR2 ;╨╛╤И╨╕╨▒╨║╨░
       endif
        JP SAVE_OK

       if 1==0
;╨з╨╕╤В╨░╨╡╨╝ ╤Б╨╕╤Б╤В╨╡╨╝╨╜╤Л╨╣ ╤Б╨╡╨║╤В╨╛╤А
NOFILE  LD DE,#0008
        LD HL,CAT
        LD BC,#0105
        CALL TRDOS
        JP NZ,ERROR2   ;╨╛╤И╨╕╨▒╨║╨░
        LD A,(CAT+228) ;╨║╨╛╨╗-╨▓╨╛ ╤Д╨░╨╣╨╗╨╛╨▓
        CP 128
        JP NC,ERROR2
        LD HL,(CAT+229);╨║╨╛╨╗-╨▓╨╛ ╤Б╨▓╨╛╨▒. ╤Б╨╡╨║╤В╨╛╤А╨╛╨▓
        LD DE,57
        AND A
        SBC HL,DE
        JP C,ERROR2

;╨Ч╨░╨┐╨╕╤Б╤Л╨▓╨░╨╡╨╝ ╨║╨░╤А╤В╤Г ╨╕ ╨╝╨░╤Б╤Б╨╕╨▓+╨╝╤Г╤Б╨╛╤А
        LD HL,MAP
        LD DE,#3900
        LD C,#0B
        CALL TRDOS
        JP NZ,ERROR2 ;╨╛╤И╨╕╨▒╨║╨░
;╨г╨▓╨╡╨╗╨╕╤З╨╕╨▓╨░╨╡╨╝ ╨░╨┤╤А╨╡╤Б ╨╜╨░ ╨┤╨╕╤Б╨║╨╡ ╨▓╨┐╨╡╤А╨╡╨┤ ╨╜╨░ 48 ╤Б╨╡╨║╤В╨╛╤А╨╛╨▓ (3 ╤В╤А╨╡╨║╨░)
        LD DE,(CAT+225)
        INC D,D,D

        JR SAVE2

FILE    LD HL,FILENAM
        LD DE,#5CDD
        LD BC,9
        LDIR
        RET

TRDOS   EX AF,AF' ;'
        XOR A
        LD (23823),A  ;╨Ю╨▒╨╜╤Г╨╗╤П╨╡╨╝ ╨║╨╛╨┤
        LD (23824),A  ;╨╛╤И╨╕╨▒╨║╨╕ TR-DOS
        LD (23570),A  ;╨С╨╗╨╛╨║╨╕╤А╤Г╨╡╨╝ ╨┐╨╛╤В╨╛╨║
        EX AF,AF' ;'
        PUSH HL
        LD HL,(23613)
        LD (DOS_ERR+1),HL
        LD HL,DOS_ERR ;╨г╤Б╤В╨░╨╜╨░╨▓╨╗╨╕╨▓╨░╨╡╨╝
        EX (SP),HL    ;╤Б╨▓╨╛╨╣ ╨╛╨▒╤А╨░╨▒╨╛╤В╤З╨╕╨║
        LD (23613),SP
        JP #3D13
DOS_ERR LD HL,0
        LD (23613),HL
        LD A,6        ;╨Т╨╛╤Б╤Б╤В╨░╨╜╨░╨▓╨╗╨╕╨▓╨░╨╡╨╝
        LD (23570),A  ;╨┐╨╛╤В╨╛╨║
        LD A,(23838)
        LD B,A
        LD A,(23823)  ;╨Я╤А╨╛╨▓╨╡╤А╤П╨╡╨╝
        AND A         ;╨▒╤Л╨╗╨░ ╨╗╨╕ ╨╛╤И╨╕╨▒╨║╨░
        RET Z
        CP B
        RET Z
        INC A
        RET Z
ERR     LD B,10
        LD A,2
        OUT (254),A
        HALT
        DJNZ $-1
        XOR A
        OUT (254),A
        RET

FILENAM DB "VERASAVEC" ;TODO HDD
CAT
       endif