Subversion Repositories ngs

Rev

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