コード例 #1
0
ファイル: basic.py プロジェクト: AndrewRevinsky/zx-speccy
    def number(self, number):
        ''' Returns a floating point (or integer) number for a BASIC
        program. That is: It's ASCII representation followed by 5 bytes 
        in floating point or integer format (if number in (-65535 + 65535)
        '''
        s = [ord(x) for x in str(number)] + [14] # Bytes of string representation in bytes

        if number == int(number) and abs(number) < 65536: # integer form?
            sign = 0xFF if number < 0 else 0
            b = [0, sign] + self.numberLH(number) + [0]
        else: # Float form
            (C, ED, LH) = fp.immediate_float(number)
            C = C[:2] # Remove 'h'
            ED = ED[:4] # Remove 'h'
            LH = LH[:4] # Remove 'h'

            b = [int(C, 16)] # Convert to BASE 10
            b += [int(ED[:2], 16), int(ED[2:], 16)]
            b += [int(LH[:2], 16), int(LH[2:], 16)]

        return s + b
コード例 #2
0
    def number(self, number):
        ''' Returns a floating point (or integer) number for a BASIC
        program. That is: It's ASCII representation followed by 5 bytes 
        in floating point or integer format (if number in (-65535 + 65535)
        '''
        s = [ord(x) for x in str(number)
             ] + [14]  # Bytes of string representation in bytes

        if number == int(number) and abs(number) < 65536:  # integer form?
            sign = 0xFF if number < 0 else 0
            b = [0, sign] + self.numberLH(number) + [0]
        else:  # Float form
            (C, ED, LH) = fp.immediate_float(number)
            C = C[:2]  # Remove 'h'
            ED = ED[:4]  # Remove 'h'
            LH = LH[:4]  # Remove 'h'

            b = [int(C, 16)]  # Convert to BASE 10
            b += [int(ED[:2], 16), int(ED[2:], 16)]
            b += [int(LH[:2], 16), int(LH[2:], 16)]

        return s + b
コード例 #3
0
def _float(op):
    ''' Returns a floating point operand converted to 5 byte (40 bits) unsigned int.
    The result is returned in a tuple (C, DE, HL) => Exp, mantissa =>High16 (Int part), Low16 (Decimal part)
    '''
    return fp.immediate_float(float(op))