memory.py

#! /usr/bin/python3
# ===================================================================
#
# ===================================================================

import test_bytearray as ba

MEMAX = 1024 * 4
MEM   = bytearray(MEMAX)

ascii['','','','','','','','','','','','','','','','',
      '','','','','','','','','','','','','','','','',
      ' ','!','"','#','$','%','&',''','(',')','*','+',',','-','.','/',
      '0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?',
      '@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',
      'P','Q','R','S','T','U','V','W','X','Y','Z','[','\',']','^','_',
      '`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
      'p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','']


# -------------------------------------------------------------------
# ---- memory functions
# -------------------------------------------------------------------


# ---- verify memory address is valid

def verify_memory_address(addr):
    if addr >= MEMAX or addr < 0:
        xx = ba.hex_string(addr,2)
        bb = ba.bit_string(addr)
        print(f'Memory address error ({addr}) ({xx}) ({bb})')
        return False
    return True

# ----

def writer_mem_byte(addr,len=1):
    pass


# ----

def read_mem_byte(addr,len=1):
    pass


# ---- set a range of memory bytes to the same value

def set_mem_byte(addr,value,len=1):
    i = 0
    while i < len:
        if not verify_memory_address(addr):
            return False
        MEM[addr] = value & 0xFF
        i += 1
        addr += 1
    return True

def display_mem_byte(addr,len=1,title=None):
    if title:
        print(title)
    i = 0
    while i < len:
        if not verify_memory_address(addr):
            return False
        dd = MEM[addr]
        xx = ba.hex_string(MEM[addr],2)
        bb = ba.bit_string(MEM[addr])
        print(f'[{addr:6}]  {dd:3}  {xx}  {bb}')
        i += 1
        addr += 1
    return True



# -------------------------------------------------------------------
# ---- main
# -------------------------------------------------------------------

if __name__ == '__main__':

    set_mem_byte(1024,0xAA,4)

    display_mem_byte(1024,4,'Memory Dump Test')

    if not set_mem_byte(-1,'A',4):
        pass