Blame | Last modification | View Log | Download | RSS feed
AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 1 - 1/17/2011 21:30:41
1/ 0 :
2/ 0 : include macros.a80
(1) 1/ 0 :
(1) 2/ 0 : RELAXED ON
(1) 3/ 0 : CPU Z80UNDOC
(1) 4/ 0 :
(1) 5/ 0 : DZ MACRO DEFZ
(1) 6/ 0 : DB DEFZ,0
(1) 7/ 0 : ENDM
(1) 8/ 0 :
(1) 9/ 0 : DC MACRO DEFC
(1) 10/ 0 : IF STRLEN(DEFC)>1
(1) 11/ 0 : DB SUBSTR(DEFC,0,STRLEN(DEFC)-1)
(1) 12/ 0 : ENDIF
(1) 13/ 0 : IF STRLEN(DEFC)>0
(1) 14/ 0 : DB CHARFROMSTR(DEFC,STRLEN(DEFC)-1)|80H
(1) 15/ 0 : ENDIF
(1) 16/ 0 : ENDM
(1) 17/ 0 :
(1) 18/ 0 : SUM_HOB MACRO STR,AA,BB,CC
(1) 19/ 0 : DB STR
(1) 20/ 0 : DW AA
(1) 21/ 0 : DW BB
(1) 22/ 0 : DW CC
(1) 23/ 0 : $$I := 0
(1) 24/ 0 : $$S := 0
(1) 25/ 0 : REPT 9
(1) 26/ 0 : $$N := CHARFROMSTR (STR,STRLEN(STR)+$$S-9)
(1) 27/ 0 : $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
(1) 28/ 0 : $$S := $$S+1
(1) 29/ 0 : ENDM
(1) 30/ 0 : $$I := ($$I+$$S+LOW (AA)+(LOW (AA)*0X100))&0XFFFF
(1) 31/ 0 : $$S := $$S+1
(1) 32/ 0 : $$I := ($$I+$$S+HIGH (AA)+(HIGH (AA)*0X100))&0XFFFF
(1) 33/ 0 : $$S := $$S+1
(1) 34/ 0 : $$I := ($$I+$$S+LOW (BB)+(LOW (BB)*0X100))&0XFFFF
(1) 35/ 0 : $$S := $$S+1
(1) 36/ 0 : $$I := ($$I+$$S+HIGH (BB)+(HIGH (BB)*0X100))&0XFFFF
(1) 37/ 0 : $$S := $$S+1
(1) 38/ 0 : $$I := ($$I+$$S+LOW (CC)+(LOW (CC)*0X100))&0XFFFF
(1) 39/ 0 : $$S := $$S+1
(1) 40/ 0 : $$I := ($$I+$$S+HIGH (CC)+(HIGH (CC)*0X100))&0XFFFF
(1) 41/ 0 : $$S := $$S+1
(1) 42/ 0 : DW $$I
(1) 43/ 0 : ENDM
(1) 44/ 0 :
(1) 45/ 0 : DUPL MACRO LEN,FILL
(1) 46/ 0 : DUPL:
(1) 47/ 0 : $$N EQU (LEN) / 1024
(1) 48/ 0 : $$M EQU (LEN) # 1024
(1) 49/ 0 : REPT $$N
(1) 50/ 0 : DB 1024 DUP(FILL)
(1) 51/ 0 : ENDM
(1) 52/ 0 : IF $$M <> 0
(1) 53/ 0 : DB $$M DUP(FILL)
(1) 54/ 0 : ENDIF
(1) 55/ 0 : ENDM
(1) 56/ 0 :
(1) 57/ 0 : HIGH FUNCTION X,((X >> 8) & 0XFF)
(1) 58/ 0 : LOW FUNCTION X,(X & 0XFF)
AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80(macros.a80) - page 2 - 1/17/2011 21:30:41
(1) 59/ 0 :
3/ 0 :
4/ 0 : ;LAST UPDATE: 16.01.2011 savelij
5/ 0 :
6/ 0 : =6000H ADRWORK EQU 0X6000
7/ 0 : =5B00H UNPACKER EQU 0X5B00
8/ 0 :
9/ 5FEF : ORG ADRWORK-0X11
10/ 5FEF : (MACRO) SUM_HOB "FLASHNGSC",ADRWORK,EBINFLASHER-BINFLASHER,SIZE_SECTORS
10/ 5FEF : 46 4C 41 53 48 4E DB "FLASHNGSC"
47 53 43
10/ 5FF8 : 00 60 DW ADRWORK
10/ 5FFA : 9D 16 DW EBINFLASHER-BINFLASHER
10/ 5FFC : 17 00 DW SIZE_SECTORS
10/ 5FFE : =0H $$I := 0
10/ 5FFE : =0H $$S := 0
10/ 5FFE : REPT 9
10/ 5FFE : $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
10/ 5FFE : $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
10/ 5FFE : $$S := $$S+1
10/ 5FFE : ENDM
10/ 5FFE : =46H $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
10/ 5FFE : =4646H $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
10/ 5FFE : =1H $$S := $$S+1
10/ 5FFE : =4CH $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
10/ 5FFE : =9293H $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
10/ 5FFE : =2H $$S := $$S+1
10/ 5FFE : =41H $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
10/ 5FFE : =D3D6H $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
10/ 5FFE : =3H $$S := $$S+1
10/ 5FFE : =53H $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
10/ 5FFE : =272CH $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
10/ 5FFE : =4H $$S := $$S+1
10/ 5FFE : =48H $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
10/ 5FFE : =6F78H $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
10/ 5FFE : =5H $$S := $$S+1
10/ 5FFE : =4EH $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
10/ 5FFE : =BDCBH $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
10/ 5FFE : =6H $$S := $$S+1
10/ 5FFE : =47H $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
10/ 5FFE : =518H $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
10/ 5FFE : =7H $$S := $$S+1
10/ 5FFE : =53H $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
10/ 5FFE : =5872H $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
10/ 5FFE : =8H $$S := $$S+1
10/ 5FFE : =43H $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
10/ 5FFE : =9BBDH $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
10/ 5FFE : =9H $$S := $$S+1
10/ 5FFE : =9BC6H $$I := ($$I+$$S+LOW (ADRWORK)+(LOW (ADRWORK)*0X100))&0XFFFF
10/ 5FFE : =AH $$S := $$S+1
10/ 5FFE : =FC30H $$I := ($$I+$$S+HIGH (ADRWORK)+(HIGH (ADRWORK)*0X100))&0XFFFF
10/ 5FFE : =BH $$S := $$S+1
10/ 5FFE : =99D8H $$I := ($$I+$$S+LOW (EBINFLASHER-BINFLASHER)+(LOW (EBINFLASHER-BINFLASHER)*0X100))&0XFFFF
10/ 5FFE : =CH $$S := $$S+1
10/ 5FFE : =AFFAH $$I := ($$I+$$S+HIGH (EBINFLASHER-BINFLASHER)+(HIGH (EBINFLASHER-BINFLASHER)*0X100))&0XFFFF
10/ 5FFE : =DH $$S := $$S+1
10/ 5FFE : =C71EH $$I := ($$I+$$S+LOW (SIZE_SECTORS)+(LOW (SIZE_SECTORS)*0X100))&0XFFFF
10/ 5FFE : =EH $$S := $$S+1
10/ 5FFE : =C72CH $$I := ($$I+$$S+HIGH (SIZE_SECTORS)+(HIGH (SIZE_SECTORS)*0X100))&0XFFFF
10/ 5FFE : =FH $$S := $$S+1
AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 3 - 1/17/2011 21:30:41
10/ 5FFE : 2C C7 DW $$I
11/ 6000 :
12/ 6000 : F3 DI
13/ 6001 : 18 16 JR START0
14/ 6003 :
15/ 6003 : 46 6C 61 73 68 65 DB "Flasher for NeoGS v0.2"
72 20 66 6F 72 20
4E 65 6F 47 53 20
76 30 2E 32
16/ 6019 : START0
17/ 6019 : 21 00 60 LD HL,ADRWORK
18/ 601C : E5 PUSH HL
19/ 601D : 21 3A 60 LD HL,DEPACK
20/ 6020 : 11 00 5B LD DE,UNPACKER
21/ 6023 : 01 6E 00 LD BC,BINFLASHER-DEPACK
22/ 6026 : D5 PUSH DE
23/ 6027 : ED B0 LDIR
24/ 6029 : 21 44 77 LD HL,EBINFLASHER-1
25/ 602C : 11 FF FF LD DE,0XFFFF
26/ 602F : 01 9D 16 LD BC,EBINFLASHER-BINFLASHER
27/ 6032 : ED B8 LDDR
28/ 6034 : 21 00 60 LD HL,ADRWORK
29/ 6037 : EB EX DE,HL
30/ 6038 : 23 INC HL
31/ 6039 : C9 RET
32/ 603A :
33/ 603A : DEPACK include dec40.a80
(1) 1/ 603A : ;Z80 depacker for megalz V4 packed files (C) fyrex^mhm
(1) 2/ 603A :
(1) 3/ 603A : ; DESCRIPTION:
(1) 4/ 603A : ;
(1) 5/ 603A : ; Depacker is fully relocatable, not self-modifying,
(1) 6/ 603A : ;it's length is 110 bytes starting from DEC40.
(1) 7/ 603A : ;Register usage: AF,AF',BC,DE,HL. Must be CALL'ed, return is done by RET.
(1) 8/ 603A : ;Provide extra stack location for store 2 bytes (1 word). Depacker does not
(1) 9/ 603A : ;disable or enable interrupts, as well as could be interrupted at any time
(1) 10/ 603A : ;(no f*cking wicked stack usage :).
(1) 11/ 603A :
(1) 12/ 603A : ; USAGE:
(1) 13/ 603A : ;
(1) 14/ 603A : ; - put depacker anywhere you want,
(1) 15/ 603A : ; - put starting address of packed block in HL,
(1) 16/ 603A : ; - put location where you want data to be depacked in DE,
(1) 17/ 603A : ; (much like LDIR command, but without BC)
(1) 18/ 603A : ; - make CALL to depacker (DEC40).
(1) 19/ 603A : ; - enjoy! ;)
(1) 20/ 603A :
(1) 21/ 603A : ; PRECAUTIONS:
(1) 22/ 603A : ;
(1) 23/ 603A : ; Be very careful if packed and depacked blocks coincide somewhere in memory.
(1) 24/ 603A : ;Here are some advices:
(1) 25/ 603A : ;
(1) 26/ 603A : ; 1. put packed block to the highest addresses possible.
(1) 27/ 603A : ; Best if last byte of packed block has address #FFFF.
(1) 28/ 603A : ;
(1) 29/ 603A : ; 2. Leave some gap between ends of packed and depacked block.
(1) 30/ 603A : ; For example, last byte of depacked block at #FF00,
(1) 31/ 603A : ; last byte of packed block at #FFFF.
(1) 32/ 603A : ;
(1) 33/ 603A : ; 3. Place nonpackable data to the end of block.
AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80(dec40.a80) - page 4 - 1/17/2011 21:30:41
(1) 34/ 603A : ;
(1) 35/ 603A : ; 4. Always check whether depacking occurs OK and neither corrupts depacked data
(1) 36/ 603A : ; nor hangs computer.
(1) 37/ 603A : ;
(1) 38/ 603A :
(1) 39/ 603A : DEC40
(1) 40/ 603A : 3E 80 LD A,0X80
(1) 41/ 603C : 08 EX AF,AF'
(1) 42/ 603D : ED A0 MS LDI
(1) 43/ 603F : 01 FF 02 M0 LD BC,0X2FF
(1) 44/ 6042 : 08 M1 EX AF,AF'
(1) 45/ 6043 : 87 M1X ADD A,A
(1) 46/ 6044 : 20 03 JR NZ,M2
(1) 47/ 6046 : 7E LD A,(HL)
(1) 48/ 6047 : 23 INC HL
(1) 49/ 6048 : 17 RLA
(1) 50/ 6049 : CB 11 M2 RL C
(1) 51/ 604B : 30 F6 JR NC,M1X
(1) 52/ 604D : 08 EX AF,AF'
(1) 53/ 604E : 10 0F DJNZ X2
(1) 54/ 6050 : 3E 02 LD A,2
(1) 55/ 6052 : CB 29 SRA C
(1) 56/ 6054 : 38 18 JR C,N1
(1) 57/ 6056 : 3C INC A
(1) 58/ 6057 : 0C INC C
(1) 59/ 6058 : 28 0F JR Z,N2
(1) 60/ 605A : 01 3F 03 LD BC,0X33F
(1) 61/ 605D : 18 E3 JR M1
(1) 62/ 605F :
(1) 63/ 605F : 10 25 X2 DJNZ X3
(1) 64/ 6061 : CB 39 SRL C
(1) 65/ 6063 : 38 D8 JR C,MS
(1) 66/ 6065 : 04 INC B
(1) 67/ 6066 : 18 DA JR M1
(1) 68/ 6068 : X6
(1) 69/ 6068 : 81 ADD A,C
(1) 70/ 6069 : N2
(1) 71/ 6069 : 01 FF 04 LD BC,0X4FF
(1) 72/ 606C : 18 D4 JR M1
(1) 73/ 606E : N1
(1) 74/ 606E : 0C INC C
(1) 75/ 606F : 20 28 JR NZ,M4
(1) 76/ 6071 : 08 EX AF,AF'
(1) 77/ 6072 : 04 INC B
(1) 78/ 6073 : CB 19 N5 RR C
(1) 79/ 6075 : D8 RET C
(1) 80/ 6076 : CB 10 RL B
(1) 81/ 6078 : 87 ADD A,A
(1) 82/ 6079 : 20 03 JR NZ,N6
(1) 83/ 607B : 7E LD A,(HL)
(1) 84/ 607C : 23 INC HL
(1) 85/ 607D : 17 RLA
(1) 86/ 607E : 30 F3 N6 JR NC,N5
(1) 87/ 6080 : 08 EX AF,AF'
(1) 88/ 6081 : 80 ADD A,B
(1) 89/ 6082 : 06 06 LD B,6
(1) 90/ 6084 : 18 BC JR M1
(1) 91/ 6086 : X3
(1) 92/ 6086 : 10 04 DJNZ X4
(1) 93/ 6088 : 3E 01 LD A,1
AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80(dec40.a80) - page 5 - 1/17/2011 21:30:41
(1) 94/ 608A : 18 0F JR M3
(1) 95/ 608C : 10 08 X4 DJNZ X5
(1) 96/ 608E : 0C INC C
(1) 97/ 608F : 20 08 JR NZ,M4
(1) 98/ 6091 : 01 1F 05 LD BC,0X51F
(1) 99/ 6094 : 18 AC JR M1
(1) 100/ 6096 : X5
(1) 101/ 6096 : 10 D0 DJNZ X6
(1) 102/ 6098 : 41 LD B,C
(1) 103/ 6099 : 4E M4 LD C,(HL)
(1) 104/ 609A : 23 INC HL
(1) 105/ 609B : 05 M3 DEC B
(1) 106/ 609C : E5 PUSH HL
(1) 107/ 609D : 69 LD L,C
(1) 108/ 609E : 60 LD H,B
(1) 109/ 609F : 19 ADD HL,DE
(1) 110/ 60A0 : 4F LD C,A
(1) 111/ 60A1 : 06 00 LD B,0
(1) 112/ 60A3 : ED B0 LDIR
(1) 113/ 60A5 : E1 POP HL
(1) 114/ 60A6 : 18 97 JR M0
(1) 115/ 60A8 : END_DEC40
(1) 116/ 60A8 :
34/ 60A8 : BINFLASHER binclude flasher_pack.rom
35/ 7745 : EBINFLASHER
36/ 7745 :
37/ 7745 : =>TRUE IF (EBINFLASHER-BINFLASHER)&0XFF
38/ 7745 : =17H SIZE_SECTORS EQU ((EBINFLASHER-BINFLASHER)>>8)+1
39/ 7745 : =>FALSE ELSE
40/ 7745 : SIZE_SECTORS EQU ((EBINFLASHER-BINFLASHER)>>8)
41/ 7745 : [37] ENDIF
42/ 7745 :
AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 6 - 1/17/2011 21:30:41
symbol table (* = unused):
------------------------
ADRWORK : 6000 - | *ARCHITECTURE : i386-unknown-win32 - |
*BIGENDIAN : 0 - | BINFLASHER : 60A8 C |
*BRANCHEXT : 0 - | *CASESENSITIVE : 1 - |
*CONSTPI : 3.141592653589793 - | *DATE : 1/17/2011 - |
*DEC40 : 603A C | DEPACK : 603A C |
EBINFLASHER : 7745 C | *END_DEC40 : 60A8 C |
*FALSE : 0 - | *FULLPMMU : 1 - |
*HAS64 : 1 - | *HASDSP : 0 - |
*HASFPU : 0 - | *HASPMMU : 0 - |
I7 : C72C - | *INEXTMODE : 0 - |
*INLWORDMODE : 0 - | *INMAXMODE : 0 - |
*INSRCMODE : 0 - | *INSUPMODE : 0 - |
*LISTON : 1 - | M0 : 603F C |
M1 : 6042 C | M1X : 6043 C |
M2 : 6049 C | M3 : 609B C |
M4 : 6099 C | *MACEXP : 1 - |
*MOMCPU : 80DC - | *MOMCPUNAME : Z80UNDOC - |
MS : 603D C | N1 : 606E C |
N2 : 6069 C | N5 : 6073 C |
N6 : 607E C | N7 : 43 - |
*NESTMAX : 100 - | *PACKING : 0 - |
*PADDING : 1 - | *RELAXED : 1 - |
S7 : F - | SIZE_SECTORS : 17 - |
START0 : 6019 C | *TIME : 21:30:41 - |
*TRUE : 1 - | UNPACKER : 5B00 - |
*VERSION : 142F - | X2 : 605F C |
X3 : 6086 C | X4 : 608C C |
X5 : 6096 C | X6 : 6068 C |
56 symbols
30 unused symbols
AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 7 - 1/17/2011 21:30:41
defined macros:
---------------
DC | DUPL
DZ | SUM_HOB
4 macros
AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 8 - 1/17/2011 21:30:41
defined functions:
------------------
LOW | HIGH
AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 9 - 1/17/2011 21:30:41
codepages:
----------
STANDARD (0 changed characters)
0.06 seconds assembly time
217 lines source file
268 lines incl. macro expansions
2 passes
0 errors
0 warnings