Updates from September, 2021 Toggle Comment Threads | Keyboard Shortcuts

  • ThomasPowell 11:01 am on September 24, 2021 Permalink | Reply
    Tags: extended warranty, lowes, washing machine   

    Lowe’s Service Advantage extended protection plan 20% premium is not Worth It 

    We bought a 4.2 cubic foot Maytag MVWC565FW washer in September of 2019 and paid $130 for the 5 year extended protection plan (Lowe’s Service Advantage) for major appliances $400-699.

    Note: if it takes more than fourteen days from first scheduled appointment to resolution, you may be able to receive a one-time $50 payment from your Lowe’s Service Advantage plan.

    Interactions with Lowe’s Service Advantage and their service provider

    We called for service on August 24, 2021.

    September 1, 2021 – initial visit from contract service provider. They diagnosed the problem and repair person said they scheduled a visit for September 15, 2021 after the part came in.

    September 15, 2021 – called contract service provider after no one showed for the appointment I cleared my morning calendar for. They said that couldn’t get one of the parts (shift actuator), but I should call Lowe’s to see if they could locate a part.

    September 15, 2021 – called Lowe’s, waited 90 minutes for a call back and requested they look for the part. They said it could be up to five business days before the business unit that did that might respond to them.

    September 17, 2021 – called Lowe’s Service Advantage back to follow-up (90+ min wait for call back), the part was supposedly going to be sent out to service provider on 9/20.

    September 20, 2021 – called contract service provider to see if they received any update from Lowe’s. They said would be at least September 24 before it would be sent/arrive (was not completely clear which end of the transaction it was).

    September 23, 2021 – called Lowe’s Service Advantage back for follow-up (90+ min wait for call back). They said they would ask their supplier to give status on parts, with up to a 5 business day wait to hear back.

    September 24, 2021 – reached out to Lowe’s on social media channels, and the response was to call Lowe’s Protection Plan phone number. Called contract service provider instead, and they said that they’re still waiting on a part, but that it supposedly got shipped September 23.

    September 27, 2021 – received an email from Lowe’s that the part was delivered to the service provider.

    September 28, 2021 – Called contract service provider, but they couldn’t make appointment because their systems were down but they’d call me when they came back up.

    September 29, 2021 – Called contract service provider. Their first available appointments were 10/5 or 10/6. Scheduled for 10/6. $50 payment for delay was in today’s mail, which seems like a bit of a slap in the face at this point.

    October 5, 2021 – Called service provider to try to confirm appointment for the next day. Robocall came through 15 minutes prior to their leaving the office for the day.

    October 6, 2021 – Service technician was able to replace actuator, but hub could not be replaced without ordering a new agitator. Washer is now working otherwise.

    It took 43 days to get back to a working washing machine.

    So far, I’ve spent 5+ hours waiting for call backs, 4 hours waiting for service appointments that were apparently never made or canceled without my knowledge, and my wife has spent 12-14 hours at the laundromat and well over $100 (maybe even $200?) at the laundromat.

    Log of interactions with the Lowe's Service Advantage service provider
    Service provider logs.

    Not the First Time

    This has been the second appliance/equipment purchase in the last two years that has subpar support. We also bought a Craftsman Cordless Electric Mower that we couldn’t get a replacement battery for.

  • ThomasPowell 6:49 am on September 22, 2021 Permalink | Reply
    Tags: r-470, ringo, zx-81   

    Trying Out the Ringo R-470, a Brazilian ZX-81 Clone 

    I’ve also recorded a video on YouTube where can you see a demonstration of the Ringo R-470 emulation on the EightyOne emulator:

    Demonstrating the Ringo R-470 emulation in EightyOne

    The Jupiter ACE was an obscure machine, partly for the fact that the primary programming environment was the Forth programming language. I found out after my Jupiter ACE post that it enjoys a small but faithful following. You can also find them for purchase on eBay if you’re willing to spend $1,000+ on a unique and obscure ZX-81 clone.

    The Ringo R-470

    I really only stumbled upon Ringo R-470 because there’s a ROM for it packaged with the EightyOne Sinclair Emulator. There are various copies of its original manual floating around (also available on Scribd) and a very brief wikipedia page. The emulation in the emulator mostly works, but virtual peripheral support (including the tape loader) seems shaky at best. You’re not likely to find one available for sale online, either.

    R-470 Ringo - Frente

    The above image which is also on the Wikipedia page is pretty standard in terms of being able to see the features of the computer clearly. This Sinclair Clones page has a few better photos, but you still can’t completely see the keyboard layout. (You can find a clearer picture of the layout on page 12 of the original manual linked above.)

    Using with the EightyOne emulator

    Edit cursor [>] and [K]eyword/command mode at the bottom

    The functionality of the R-470 is mostly similar to the ZX-81, but the placement of the keywords and symbols (which still use English) is completely different from the ZX-81 layout. For example, L in keyword mode is LIST on the R-470 and LET on the ZX-81 (and K is LET on the R-470 and LIST on the ZX-81). However, the two layers of command mode keys and function mode keys and the graphics mode are similar, and the displayed listing has a [>] cursor for highlighting which key will get picked up if you select edit mode.

    If this is your first try with a Sinclair clone (that speaks BASIC), you’ll need to keep in mind that the keywords are whole symbols on their own as opposed to being parsed from strings like Microsoft-derived BASICs. It’s actually kind of nice for editing and I’m sure it greatly simplifies the parsing, but even “TO” cannot be specified with the letters T and O and must instead be typed with the [left shift + T] (or [left shift + 4] on the ZX-81).

    Another shock to the system for those unacquainted with the Sinclair way is that you get an error code + line number that it happened on at the end of execution (0 is no error/OK):

    B (Integer out of range) on line 120 (because I tried to plot on row 44, and y coordinates only go up to 43)

    An alphabetical guide to the keyboard mapping of keywords and symbols:

    I’ve compiled an alphabetical listing of the symbols/commands below (also available in markdown here) if you want to try your hand at typing a BASIC program into the the R-470 inside the EightyOne emulator. I’m sure that typing on a modern keyboard is more functional than typing on rubber chiclet keys, but the layout is pretty challenging:

    symbolkeycursor modemodifier
    P[K]eyword/command modeleft shift
    “”2[K]eyword/command modeleft shift
    $O[K]eyword/command modeleft shift
    (X[K]eyword/command modeleft shift
    (edit mode)1[K]eyword/command modeleft shift
    (graphics mode)9[K]eyword/command modeleft shift
    )C[K]eyword/command modeleft shift
    *G[K]eyword/command modeleft shift
    **F[K]eyword/command modeleft shift
    +K[K]eyword/command modeleft shift
    J[K]eyword/command modeleft shift
    /H[K]eyword/command modeleft shift
    :N[K]eyword/command modeleft shift
    ;M[K]eyword/command modeleft shift
    <V[K]eyword/command modeleft shift
    <=Y[K]eyword/command modeleft shift
    <>U[K]eyword/command modeleft shift
    =L[K]eyword/command modeleft shift
    >B[K]eyword/command modeleft shift
    >=I[K]eyword/command modeleft shift
    ?Z[K]eyword/command modeleft shift
    ABSG[F] function modeleft CTRL (and release) from [K]eyword/command mode
    ACSR[F] function modeleft CTRL (and release) from [K]eyword/command mode
    ANDA[K]eyword/command modeleft shift
    ARCTANY[F] function modeleft CTRL (and release) from [K]eyword/command mode
    ASNW[F] function modeleft CTRL (and release) from [K]eyword/command mode
    ATM[F] function modeleft CTRL (and release) from [K]eyword/command mode
    CHR$D[F] function modeleft CTRL (and release) from [K]eyword/command mode
    CLEARZ[K]eyword/command modedefault
    CLSX[K]eyword/command modedefault
    CODEC[F] function modeleft CTRL (and release) from [K]eyword/command mode
    CONTC[K]eyword/command modedefault
    COPYQ[K]eyword/command modedefault
    COSE[F] function modeleft CTRL (and release) from [K]eyword/command mode
    DIMD[K]eyword/command modedefault
    EXPK[F] function modeleft CTRL (and release) from [K]eyword/command mode
    FASTR[K]eyword/command modeleft shift
    FORF[K]eyword/command modedefault
    GOSUBH[K]eyword/command modedefault
    GOTOG[K]eyword/command modedefault
    IFW[K]eyword/command modedefault
    INKEY$I[F] function modeleft CTRL (and release) from [K]eyword/command mode
    INPUTI[K]eyword/command modedefault
    INTH[F] function modeleft CTRL (and release) from [K]eyword/command mode
    LENX[F] function modeleft CTRL (and release) from [K]eyword/command mode
    LETK[K]eyword/command modedefault
    LISTL[K]eyword/command modedefault
    LLIST4[K]eyword/command modeleft shift
    LNL[F] function modeleft CTRL (and release) from [K]eyword/command mode
    LOADA[K]eyword/command modedefault
    LPRINT3[K]eyword/command modeleft shift
    NEWM[K]eyword/command modedefault
    NEXTN[K]eyword/command modedefault
    NOTN[F] function modeleft CTRL (and release) from [K]eyword/command mode
    ORQ[K]eyword/command modeleft shift
    PAUSEE[K]eyword/command modedefault
    PEEKB[F] function modeleft CTRL (and release) from [K]eyword/command mode
    PLOTY[K]eyword/command modedefault
    POKEB[K]eyword/command modedefault
    PRINTP[K]eyword/command modedefault
    RANDO[K]eyword/command modedefault
    REMT[K]eyword/command modedefault
    RETURNJ[K]eyword/command modedefault
    RNDO[F] function modeleft CTRL (and release) from [K]eyword/command mode
    RUNR[K]eyword/command modedefault
    SAVES[K]eyword/command modedefault
    SCROLLV[K]eyword/command modedefault
    SGNJ[F] function modeleft CTRL (and release) from [K]eyword/command mode
    SINQ[F] function modeleft CTRL (and release) from [K]eyword/command mode
    SLOWE[K]eyword/command modeleft shift
    SQRF[F] function modeleft CTRL (and release) from [K]eyword/command mode
    STEPD[K]eyword/command modeleft shift
    STOPS[K]eyword/command modeleft shift
    STR$S[F] function modeleft CTRL (and release) from [K]eyword/command mode
    TAB,[F] function modeleft CTRL (and release) from [K]eyword/command mode
    TANT[F] function modeleft CTRL (and release) from [K]eyword/command mode
    THENW[K]eyword/command modeleft shift
    TOT[K]eyword/command modeleft shift
    UNPLOTU[K]eyword/command modedefault
    USRU[F] function modeleft CTRL (and release) from [K]eyword/command mode
    VALV[F] function modeleft CTRL (and release) from [K]eyword/command mode
    πP[F] function modeleft CTRL (and release) from [K]eyword/command mode
  • ThomasPowell 10:08 pm on September 11, 2021 Permalink | Reply
    Tags: ace, jupiter, jupiter ace   

    The Unique Jupiter ACE Experience: Programming Forth on a ZX-81 Like System 

    What’s the Jupiter ACE?

    The Jupiter ACE was an early 1980s home computer that had similarities to the Sinclair ZX-81, especially in the bottom input entry

    Jupiter ACE emulated in the EightyOne emulator
    Entering commands and code on the bottom line of the Jupiter ACE (using EightyOne emulator), much like the ZX-80 and ZX-81

    in the keyboard layout (By the way, symbol shift can be shift to right-shift in EightyOne emulator or is otherwise the right CTRL key… also note that the double quote, /, *, and others are reached by the symbol shift + a letter key.)

    Keyboard Layout view from SpudACE emulator

    and the extremely limited 1KB of base RAM.

    What’s Forth?

    Forth is a stack-based programming language that relies on a data stack and reverse Polish notation, much like the HP calculators are known for. A basic example would be 6 2 * which would perform the operation 6 * 2 and push the value 12 back onto the data stack. If you wanted to actually retrieve/pop the result off the stack, you would issue a 6 2 * . sequence, in which the . would pop the last value and return/print it.

    Special considerations for the Jupiter ACE’s Forth

    The data stack on the Jupiter ACE assumes 16-bit values, and the default data type assumed is a signed integer, so you have values from -32768 to 32767 that are allowed per single stack slot:

    256 * 256 is 0 (because that would require 17 bits. 128 * 256 is -32768. 128 * 256 – 1 is 32767

    Floating point numbers are possible, but they require two stack slots, so you have on operate on two consecutive stack locations at the same time to work with floating point numbers. Another challenge with the Jupiter ACE’s Forth implementation is that you’re missing some advanced math functions and you have to write your own. The following is an annotated version (the comments are in parentheses) of the SIN routine found on page 93 from the first edition Jupiter ACE manual found here:

    : SIN
        (x - sine of x)
        2DUP 2DUP 2DUP F* FNEGATE ([x,x,-x*x])
        2ROT 2ROT ([-x*x,x,x])
        27 2 ([-x*x,x,x, 27 2])
        DO (initial value of 2, limit 27)
            6 PICK 6 PICK ([-x*x,x,x,-x*x])
            F* I I 1+ * ([-x*x,x,-x^3,6])
            UFLOAT F/ ([-x*x,x,-x^3/6.])
            2DUP 2ROT F+ 2SWAP ([-x*x,-x^3/6.+x,-x^3/6.])
            (3 down the stack of floats is the multiplier of the
            numerator terms for the Newton method, 2 down the
            stack is the total sum, top of the stack is the last
            term, and the counter (I) tracks the denominator 
            multipliers (I and I+1))
            2 (add 2 to the stack for the loop increment)
        2DROP 2SWAP 2DROP ([x-x^3/6. ... etc])

    2DUP, 2ROT, and 2SWAP are methods that are defined on previous pages to basically work with floats on the stack in the same way as 16-bit integers. The algorithm is Newton’s method to estimate a sine, through 14 terms of the method. If you map out the stack locations by hand, you can follow how the method is making creative use of the top 3 – 4 (6 – 8) stack positions to keep the progress, the multiplicand of the numerator of the terms, and the current term. However, due to floating point representation, this information is harder to trace through in the emulator because you will see 16-bit values in the data stack.

    Trying for yourself

    I’ve tried out the SpudACE emulator (strictly Jupiter ACE) and the EightyOne emulator (Sinclair, Timex, and others also emulated) which can be found on this Jupiter ACE Emulators for Windows page. I’ve found the EightyOne emulator a bit more stable and usable. You’ll want to make sure to mute your sound when saving to tape, because sound *may* output when saving to your virtual tape. Watch a demonstration here and see the source code for the demo in this folder.

Compose new post
Next post/Next comment
Previous post/Previous comment
Show/Hide comments
Go to top
Go to login
Show/Hide help
shift + esc
%d bloggers like this: