Roman Numeral in Commodore Basic

Published on 28 September 2023 (Updated: 28 September 2023)

Welcome to the Roman Numeral in Commodore Basic page! Here, you'll find the source code for this program as well as a description of how the program works.

Current Solution

5 REM Read input string
10 GOSUB 1000
20 IF S$ = "" AND C = 255 THEN GOTO 240: REM no input
30 V = 0
40 PD = 0
50 K = 1
60 IF K > LEN(S$) THEN GOTO 220
70 L$ = MID$(S$, K, 1)
80 K = K + 1
90 D = 0
100 IF L$ = "M" THEN D = 1000
110 IF L$ = "D" THEN D = 500
120 IF L$ = "C" THEN D = 100
130 IF L$ = "L" THEN D = 50
140 IF L$ = "X" THEN D = 10
150 IF L$ = "V" THEN D = 5
160 IF L$ = "I" THEN D = 1
170 IF D = 0 THEN GOTO 260: REM Invalid letter
180 V = V + D
185 REM Subtract if the previous digit valid and smaller
190 IF PD > 0 AND PD < D THEN V = V - 2 * PD: D = 0
200 PD = D
210 GOTO 60
220 PRINT MID$(STR$(V), 2)
230 END
240 PRINT "Usage: please provide a string of roman numerals"
250 END
260 PRINT "Error: invalid string of roman numerals"
270 END
1000 REM Read input value one character at a time since Commodore BASIC
1001 REM has trouble reading line from stdin properly
1002 REM S$ = string
1003 REM Initialize
1010 S$ = ""
1015 REM Append characters until end of input
1020 GET A$
1030 C = ASC(A$)
1040 IF C = 13 OR C = 255 THEN RETURN: REM end of value or input
1050 S$ = S$ + A$
1060 GOTO 1020

Roman Numeral in Commodore Basic was written by:

If you see anything you'd like to change or update, please consider contributing.

How to Implement the Solution

No 'How to Implement the Solution' section available. Please consider contributing.

How to Run the Solution

No 'How to Run the Solution' section available. Please consider contributing.