There are many flavors of BASIC available for the IBM MVS operating system. The original port of Dartmouth BASIC, known as DTSS BASIC, is called BASIC/360, and is already implemented by the supplement tape for MVS 3.8j. So, everything I do on the emulator is based on that version of BASIC.
Here's the original comment flower box from the core BASIC/360 compiler module, written in PL/I. The users of this BASIC compiler did not need to compile th PL/I from source, however. The binary would have been available on the original distribution tape.
Here's a copy of the very first BASIC program. A simple mortgage calculator that I copied directly from the Dartmouth Time-Share System BASIC implementation. This program runs as-is, in BASIC/360:
```basic
000001 1 REM MORTGATE COMPUTER
000002 10 DATA 0.05,28500,170,1,1964
000003 50 READ I,P,P1,M,Y
000004 60 LET R=1+I/12
000005 70 PRINT "YEAR", "PRINCIPLE"
000006 80 PRINT Y,P
000007 90 LET P=P*R-P1
000008 100 IF P>0 THEN 120
000009 110 LET P=0
000010 120 LET M=M+1
000011 130 IF M>12 THEN 160
000012 140 PRINT " ",
000013 150 GOTO 190
000014 160 LET M=1
000015 170 LET Y=Y+1
000016 180 PRINT Y,
000017 190 PRINT INT(P)
000018 200 IF P>0 THEN 90
000019 210 END
```
To run this on MVS, you need a JCL job card deck, to define the batch job to the system. Here's a version that is designed to run interactively. I'm using this JCL, because the program in "monitor" mode is designed to self-terminate after 5000 iterations of a loop. This "interactive" version will produce the complete set of output.
Mainframe batch jobs are designed from the start to produce printed output. They were written in an era where end-user applications presented interactively on a screen were not really an option. The only people who had screens were engineers, system operators, and programmers. Everyone else interacted with computers by way of printed output. To see the output from this program, you can [download it here](http://gmgauthier.us-east-1.linodeobjects.com/docs/mymort1.pdf).