''HEAD, 6502 INPUT CONVERSION // EDIT DATE 10OCT78 12:45 // SOURCE FILE INTRPAJH.LO // AUTHOR A. J. HOWARD ''USE, PACKET AJH.US; 1 'TP' [0]:'LBR' BUFFER, 'RBR' 'DP' BUFFERX, 'DP' DP VALUE, CHAR, COUNT, MINUS FLAG, ;; ..... BASE, ; ;INTRP SP:: 'LBR' // (PKT, VAL, WIDTH) 10 -> BASE, INTRP DP VALUE, DP VALUE -> [FL1], 'RBR' INTRP DP:: 'LBR' // (PKT, VAL, WIDTH) 10 -> BASE, INTRP DP VALUE, DP VALUE -> 'DP' [FL1], 'RBR' INTRP HX:: 'LBR' // (PKT, VAL, WIDTH) 16 -> BASE, INTRP DP VALUE, DP VALUE -> [FL1], 'RBR' INTRP DP VALUE:'LBR' [FL2] -> COUNT, SETUP CONVERT, 0 -> MINUS FLAG -> DP VALUE, 'DO' // FIND A VALID START CHARACTER 'WHILE' COUNT # 0: GET CHARACTER, CHAR = "-": ^MINUS FLAG; // LEADING - CHAR # "+": // LEADING + TEST NUMERIC () # 0: ^COUNT, // NUMERIC 'DEC' BUFFERX; 'END' ; ;; ; 'DO' // CONVERT THE NUMBER 'WHILE' GET CHARACTER () # 0: TEST NUMERIC () # 0: BASE*DP VALUE + CHAR -> DP VALUE, 'END' ;; MINUS FLAG # 0: -DP VALUE -> DP VALUE;; COUNT -> AMT LEFT [FL0], CHARX [FL0] - COUNT -> CHARX [FL0], 'RBR' TEST NUMERIC:'LBR' CHAR >= "0" & CHAR <= "9": CHAR - "0" -> CHAR, 'RETURN' 1.; // NUMERIC BASE = 16 & CHAR >= "A" & CHAR <= "F": CHAR - ("A" - 10) -> CHAR, 'RETURN' 1.; // NUMERIC (HEX) 'RETURN' 0, // NON NUMERIC 'RBR' ..... 'DP' STRINGX, ; ;INTRP ST:: 'LBR' // (PKT, STRING, WIDTH) [FL2] -> COUNT, SETUP CONVERT, FL1 -> STRINGX, 'DO' 'WHILE' GET CHARACTER () # 0: CHAR -> [STRINGX], ^STRINGX, 'END' 'RBR' INTRP BL:: 'LBR' // (PKT, WIDTH) // // NO MEANING ON INPUT // 'RBR' SETUP CONVERT:'LBR' BUFAD [FL0] + CHARX [FL0] - 1 -> BUFFERX, CHARX [FL0] + COUNT -> CHARX [FL0], 0 -> AMT LEFT [FL0], 'RBR' GET CHARACTER:'LBR' COUNT = 0: 'RETURN' COUNT.; // DONE BUFFER [BUFFERX] -> CHAR, ^BUFFERX, 'DEC' COUNT, 'RETURN' 1, 'RBR' ..... ; ;INTRP TA:: 'LBR' // (PKT, COL) 0 -> CHARX [FL0], [FL1] -> COUNT, SETUP CONVERT, 'RBR' INTRP PC:: 'LBR' // (PKT, RIGHT MOVE) [FL1] -> COUNT, SETUP CONVERT, 'RBR' INTRP MC:: 'LBR' // (PKT, LEFT MOVE) - [FL1] -> COUNT, SETUP CONVERT, 'RBR' ..... ; ;INTRP EJ:: // (PKT) // // SAME AS INPUT LINE // INTRP LN:: 'LBR' // (PKT, LINES) SIZE [FL0] -> COUNT - 1 + BUFAD [FL0] -> BUFFERX, 'DO' " " -> BUFFER [BUFFERX], 'WHILE' 'DEC' COUNT # 0: 'DEC' BUFFERX, 'END' [DRIVER [FL0]], 1 -> CHARX [FL0], 'RBR' ..... ''END