Multi-channel MultiTrack: NVEM

Some of the the NVEM instructions can also take advantage of jndexing. Specifically these are: NVfReadW, NVfReadQ, NVfWriteW, NVPopByte and NVPushByte. These are the same instructions that have an indexed version.

Example:

In the previous lesson I used a BranchJ to change the mapping between inputs and outputs in the good old on/off light switch example. In this program the mapping is done using a table in NVEM0.

(Click here for some tips for working around problems with copy and paste out of Internet Explorer and HTML-help (.chm) files)

        LaunchTask      Toggle,0
        LaunchTask      Toggle,1
        LaunchTask      Toggle,2
        LaunchTask      Toggle,3
        RunTasksForever

Toggle:
        WaitOnK         0
        GoSub           MapOutput
        iOn             0
        WaitOnK         0
        GoSub           MapOutput
        iOff            0

        GoTo            Toggle
;---------------------------------------
;Given an input number in J, get the corresponding
;re-mapped output number to I.
MapOutput:
        NVSetPtr        MapTable
        NVSetRecNum     0
        NVPushByte      0       ;Read the table -> X
        XtoI                    ;Transfer it to I
        Return
;----------------------------------
        NVEM0           ;Start of NVEM0 space
MapTable:
        NV0Byte         1,6,7,0