Subversion Repositories NedoOS

Rev

Rev 2262 | Blame | Compare with Previous | Last modification | View Log | Download

  1. ; Macros for defining the test vectors.
  2. ;
  3. ; Copyright (C) 2012-2023 Patrik Rak (patrik@raxoft.cz)
  4. ;
  5. ; This source code is released under the MIT license, see included license.txt.
  6.  
  7.             macro   db8 b7,b6,b5,b4,b3,b2,b1,b0
  8.             db      (b7<<7)|(b6<<6)|(b5<<5)|(b4<<4)|(b3<<3)|(b2<<2)|(b1<<1)|b0
  9.             endm
  10.            
  11.             macro   ddbe n
  12.             db      (n>>24)&0xff
  13.             db      (n>>16)&0xff
  14.             db      (n>>8)&0xff
  15.             db      n&0xff
  16.             endm
  17.  
  18.             macro   inst op1,op2,op3,op4,taila
  19.             ; Unfortunately, elseifidn doesn't seem to work properly.
  20.             if   op4==stop
  21.             db      op1,op2,op3,taila,0
  22.             elseif   op3==stop
  23.             db      op1,op2,taila,op4,0
  24.             elseif   op2==stop
  25.             db      op1,taila,op3,op4,0
  26.             else
  27.             db      op1,op2,op3,op4,taila
  28.             endif
  29.             endm
  30.  
  31.             macro   flags sn,s,zn,z,f5n,f5,hcn,hc,f3n,f3,pvn,pv,nn,n,cn,c
  32.             if      maskflags
  33.             db8     s,z,f5,hc,f3,pv,n,c
  34.             else
  35.             db      0xff
  36.             endif
  37.             endm
  38.  
  39.             macro   vec op1,op2,op3,op4,memn,mema,an,aa,fn,f,bcn,bca,den,dea,hln,hla,ixn,ixa,iyn,iya,spn,spa
  40.  
  41.             if      postccf
  42.  
  43.             if      ( @veccount % 3 ) == 0
  44.             inst    op1,op2,op3,op4,tail
  45. !areg      =      0
  46.             else
  47.             db      op1,op2,op3,op4,0
  48. !areg      =      @areg | aa
  49.             endif
  50.  
  51.             else
  52.             db      op1,op2,op3,op4
  53.             endif
  54.  
  55.             db      f
  56.  
  57.             if      postccf & ( ( @veccount % 3 ) == 2 )
  58.             db      aa | ( ( ~ @areg ) & 0x28 )
  59.             else
  60.             db      aa
  61.             endif
  62.  
  63.             dw      bca,dea,hla,ixa,iya
  64.             dw      mema
  65.             dw      spa
  66.  
  67. !veccount = @veccount+1
  68.  
  69.             endm
  70.  
  71.             macro   crcs allflagsn,allflags,alln,all,docflagsn,docflags,docn,doc,ccfn,ccf,mptrn,mptr
  72.             if      postccf
  73.             ddbe    ccf
  74.             elseif  memptr
  75.             ddbe    mptr
  76.             else
  77.             if      maskflags
  78.             if      onlyflags
  79.             ddbe    docflags
  80.             else
  81.             ddbe    doc
  82.             endif
  83.             else
  84.             if      onlyflags
  85.             ddbe    allflags
  86.             else
  87.             ddbe    all
  88.             endif
  89.             endif
  90.             endif
  91.             endm
  92.            
  93.             macro   name n
  94.             dz      n
  95.             endm
  96.  
  97. ; EOF ;
  98.