; encode the character A into the global data array P2/R0 ; r0 is size pointer ; encode: mov r4,a ; store char mov dptr,#param + P_qctl movx a,@dptr ; get Qctl from parameter table mov r2,a ; r2 has control prefix to use mov a,r4 ; get char anl a,#127 ; mask out hi bit mov r1,a ; A7 cjne r1,#32,ncod1 ; if A7 < 32 ? sjmp ncod2 ; is equal ncod1: jc ncod3 ; is less ncod2: cjne r1,#127,ncod4 ; or A7 = 127 ? ncod3: mov a,r2 ; get quote movx @r0,a ; insert control quote inc r0 ; size++ mov a,r4 ; get char tuctl ; + 32 mov r4,a ; store char sjmp ncod5 ; done ncod4: mov a,r1 ; get A7 cjne a,2,ncod5 ; if char = control prefix mov a,r2 ; get quote movx @r0,a ; insert control quote inc r0 ; size++ ncod5: mov a,r4 ; get char movx @r0,a ; insert character inc r0 ; size++ clr a movx @r0,a ; terminate string ret ;