### A good answer might be:

Four levels deep: `main` calls `doLines` which calls `convert` which calls `conCh`.

# `main` Subroutine

An advantage of modular programming is that each subroutine can be displayed and explained independently of the others. Here is the design of `main`.

To simplify the discussion, branch delays and load delays have been turned OFF in SPIM.

             .text
             .globl  main
    main:
             ??????                   # what goes here?

             la      $a0,mainPr       # prompt the user
             li      $v0,4            # service 4
             syscall

             jal     doLines          # process lines of input

             ??????                   # what goes here?

             jr      $ra              # return to OS

             .data
    mainPr:  .ascii  "Type each line of text followed by ENTER.\n"
             .asciiz "Type Q at the start of a line to finish.\n"

### QUESTION 13:

According to the Stack-based Linking convention does `main` need to push and later pop the return address?