From f3748a4c6a12db84a738cda0b36c76521921b931 Mon Sep 17 00:00:00 2001 From: Jonathan Hogg Date: Wed, 29 Jul 2020 18:40:02 +0100 Subject: [PATCH] More language tweaks. --- VM registers.xlsx | Bin 36027 -> 16941 bytes vm.py | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/VM registers.xlsx b/VM registers.xlsx index 0134a2957ad5c20f6c89ecf21c97bb5787e20811..bac4a5cba6113263ad1ea982df5a89ca89c50cde 100644 GIT binary patch delta 10428 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 T!Q?<7bl8mrivawWBL(_D<$bMG delta 29752 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 diff --git a/vm.py b/vm.py index a2688ce..87304ee 100644 --- a/vm.py +++ b/vm.py @@ -6,7 +6,7 @@ Package capturing BitScope VM specification, including registers, enumerations, commands and logic for encoding and decoding virtual machine instructions and data. All names and descriptions copyright BitScope and taken from their [VM specification -document][VM01B]. +document][VM01B] (with slight changes). [VM01B]: https://docs.google.com/document/d/1cZNRpSPAMyIyAvIk_mqgEByaaHzbFTX8hWglAMTlnHY @@ -90,8 +90,8 @@ Registers = DotDict({ "TriggerOutro": Register(0x34, 'U16', "Edge trigger outro filter counter (samples/2)"), "TriggerValue": Register(0x44, 'S0.16', "Digital (comparator) trigger (signed)"), "TriggerTime": Register(0x40, 'U32', "Stopwatch trigger time (ticks)"), - "ClockTicks": Register(0x2e, 'U16', "Master Sample (clock) period (ticks)"), - "ClockScale": Register(0x14, 'U16', "Clock divide by N (low byte)"), + "ClockTicks": Register(0x2e, 'U16', "Sample period (ticks)"), + "ClockScale": Register(0x14, 'U16', "Sample clock divider"), "TraceOption": Register(0x20, 'U8', "Trace Mode Option bits"), "TraceMode": Register(0x21, 'U8', "Trace Mode (see Trace Mode Table)"), "TraceIntro": Register(0x26, 'U16', "Pre-trigger capture count (samples)"), @@ -151,8 +151,8 @@ Registers = DotDict({ "Map5": Register(0x99, 'U8', "Peripheral Pin Select Channel 5"), "Map6": Register(0x9a, 'U8', "Peripheral Pin Select Channel 6"), "Map7": Register(0x9b, 'U8', "Peripheral Pin Select Channel 7"), - "MasterClockN": Register(0xf7, 'U8', "PLL prescale (DIV N)"), - "MasterClockM": Register(0xf8, 'U16', "PLL multiplier (MUL M)"), + "PrimaryClockN": Register(0xf7, 'U8', "PLL prescale (DIV N)"), + "PrimaryClockM": Register(0xf8, 'U16', "PLL multiplier (MUL M)"), })