home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / GENASM / AREACD21.LBR / AREACD21.AQM / AREACD21.ASM
Assembly Source File  |  2000-06-30  |  17KB  |  484 lines

  1. ; AREACODE.ASM Ver 2.1 as of December 10, 1986
  2. ; When updating, change SIGNON: message at start of data area
  3. ;
  4. ; Ver. 2.1 Colorado is getting a new area code.  Beginning
  5. ;       in the first quarter of 1988, then new "719" code
  6. ;       will cover Colorado Springs, Pueblo, Leadville and
  7. ;       Alamosa.
  8. ;
  9. ;       The "303" areacode will include Denver, Boulder and
  10. ;       Fort Collins.
  11. ;
  12. ;       This information provided by Mountain Bell,
  13. ;       Colorados's primary local telphone company.
  14. ;                        - Bob Paddock
  15. ;
  16. ;
  17. ; Ver. 2.0 added current areacodes and provided an interactive
  18. ; mode so if user didn't specify on command line, entries could
  19. ; be made without re-executing program.
  20. ;                        - Michael Conley
  21. ;                        - Theodore C. Hanf
  22. ;
  23. ; Ver. 1.3 added LA suburbs area code 818, added periods to
  24. ; messages (why not?), deleted double entry for area code 809,
  25. ; removed ungrammatical comma from ASCII string at MSG2: and
  26. ; added a space before the `$' in MSG2: so the first space in
  27. ; messages could be removed, providing an extra space for text
  28. ; without changing the SCAN3: routine's 58-character bias.
  29. ;                        - Bruce Morgen
  30. ;
  31. ; Ver. 1.2 added 718 area code for New York City, and fixed bug
  32. ;       in area code 604-804 Harry Kaemmerer
  33. ;
  34. ; Ver. 1.1 update of area codes for new U.S. areas, Mexico, &
  35. ; Eastern Canada. Harvey G. Lord, Storrs, CT 06268
  36. ;
  37. ; Ver. 1.0 - January 2, 1981 by Kelly Smith
  38. ;
  39. ;-------------------------------------------------------------------
  40. ; AREACODE is used to display the region and state, specified
  41. ; by the user...very handy, when someone leaves a area code
  42. ; number on a CBBS, but no city or state reference. Simple
  43. ; enough to use, just type AREACODE nnn<cr> (where 'nnn' is a
  44. ; three digit area  code), and in return, you get a
  45. ; geographical region by city(s), and state. Sorry if your
  46. ; particular city is not represented, and feel free to add it
  47. ; as required...
  48. ;
  49. ; Typing just AREACODE from command level puts the user in
  50. ; interactive mode, and areacodes may be entered repeatedly.
  51. ; This is not the most 'elegant' search routine that I could
  52. ; have used in implementing this program, but it is
  53. ; fast...it's best described as a "forward scanning/side
  54. ; checking mess"...if you don't find it matching on first
  55. ; character, drop to the next possible match...
  56. ;-------------------------------------------------------------------
  57. BASE    EQU    0        ; CP/M system base address
  58. BDOS    EQU    BASE+5        ; BDOS entry address
  59. TBUFF    EQU    BASE+80H    ; temporary (command) buffer
  60. ;
  61. PRNSTG    EQU    9        ; print string (ending in '$') function
  62. LINPUT    EQU    10        ; CPM edited input function
  63. ;
  64. LF    EQU    0AH        ; ASCII line feed
  65. CR    EQU    0DH        ; ASCII carriage return
  66. ;
  67.     ORG    BASE+100H
  68. ;
  69.     LXI    H,0        ; make local stack, so no warm boot
  70.     DAD    SP
  71.     SHLD    OLDSTK
  72.     LXI    SP,STACK    ; old stack saved, make new stack
  73. ;
  74. BEGIN:
  75.     LDA    TBUFF +    2    ; need help?
  76.     CPI    '?'
  77.     JNZ    START
  78.     XRA    A
  79.     STA    TBUFF        ; clear the pointer
  80.     LXI    D,HLPMSG
  81.     CALL    SPRINT
  82. START:
  83.     LXI    H,TBUFF        ; point to area code length
  84.     MVI    D,0        ; clear D Reg.
  85.     MOV    A,M        ; get it...
  86.     ADI    1        ; adjust buffer pointer +1
  87.     MOV    E,A
  88.     DAD    D        ; point 1 past area code number
  89.     MVI    M,'$'        ; tag with 'end of string'
  90.     LXI    D,TBUFF        ; check for valid entry
  91.     LDAX    D        ; must be NON-ZERO to be correct
  92.     ORA    A
  93.     JNZ    INPOK
  94.     LXI    D,SIGNON    ; Signon message runs ONLY in interactive mode
  95.     CALL    SPRINT
  96.     MVI    A,0FFH
  97.     STA    ACTIVE
  98. NOINP:                ; nothing on input / interactive mode
  99.     LXI    D,MSG4
  100.     CALL    SPRINT
  101.     LXI    D,TBUFF
  102.     MVI    A,3
  103.     STA    TBUFF
  104.     MVI    C,LINPUT
  105.     CALL    BDOS
  106.     LDA    TBUFF+1        ; no characters
  107.     MOV    B,A
  108.     ORA    A
  109.     JZ    NOMORE        ; then exit
  110.     MOV    A,B
  111.     INR    A
  112.     STA    TBUFF        ; put number of chars in buffer pointer
  113.     MVI    A,32
  114.     STA    TBUFF+1
  115.     JMP    BEGIN
  116. ;
  117. INPOK:
  118.     PUSH    D
  119.     LXI    D,MSG1        ; "Area code"
  120.     CALL    SPRINT
  121.     POP    D        ; point at area code again
  122.     CALL    SPRINT        ; o.k., so far...print whatver was input
  123.     LXI    D,MSG2        ; ", is "
  124.     CALL    SPRINT
  125.     MVI    B,0        ; clear character position counter
  126.     LXI    D,TBUFF+2    ; point to area code
  127.     LXI    H,TABLE        ; point to area code table
  128. SCAN:    LDAX    D        ; get first character of area code for match
  129.     CMP    M        ; does it match any first character in table?
  130.     JNZ    SCAN3        ; if no match, advance 58 characters in table
  131. SCAN1:    INX    D        ; bump for next area code character
  132.     INX    H        ; bump to second character in area code table
  133.     INR    B        ; bump character position counter
  134.     MOV    A,B        ; has character counter gone three positions?
  135.     CPI    3
  136.     JNZ    SCAN2        ; match next character, if not at position 3
  137.     DCX    D        ; adjust character position for subsequent match
  138.     DCX    H
  139.     LDAX    D        ; get last in entered area code
  140.     CMP    M        ; match to last character in area code table?
  141.     JZ    MATCH        ; if last character matches, display region, and state
  142.     INX    D        ; no match, bump both pointers
  143.     INX    H
  144. SCAN2:    LDAX    D        ; get next character to match
  145.     CMP    M        ; any match yet?
  146.     JNZ    BACKUP        ; back-up, if no match on current position
  147.     MOV    A,B        ; are we at final character position?
  148.     CPI    3
  149.     JZ    MATCH        ; if so, we have final match
  150.     JMP    SCAN        ; not final position, try again...
  151. BACKUP:    DCX    D        ; back-up to start of entered area code
  152.     DCX    H        ; back-up to start of current area code in table
  153.     DCR    B        ; de-bump character position counter
  154.     JNZ    BACKUP        ; loop until we are at start of string
  155. SCAN3:    PUSH    D        ; save pointer to entered area code
  156.     LXI    D,58        ; make 58 character bias
  157.     DAD    D        ; add bias to area code table pointer
  158.     POP    D        ; recover pointer to entered area code
  159.     MOV    A,M        ; have we hit "EOF" in area code table column?
  160.     CPI    'Z'-40H
  161.     JNZ    SCAN        ; if not, try next string for a match...
  162. NOMACH:    LXI    D,MSG3        ; "NOT a valid area code"
  163.     CALL    SPRINT
  164.     JMP    EXIT
  165. ;
  166. MATCH:    INX    H        ; bump for region and state table location
  167.     XCHG            ; swap to D&E Regs.
  168.     CALL    SPRINT
  169.     JMP    EXIT
  170.  
  171. ;
  172. EXIT:
  173.     LDA    ACTIVE        ; are we interactive
  174.     ORA    A        ; no/ exit
  175.     JNZ    NOINP        ; yes, go get next one
  176. NOMORE:                ; no input, user is thru
  177.     LXI    D,CRLF        ; keep it neat...
  178.     CALL    SPRINT
  179. ;
  180.     LHLD    OLDSTK        ; get old CP/M stack
  181.     SPHL            ; restore stack pointer, so no warm boot
  182.     RET            ; return to CP/M...
  183. ;
  184. SPRINT:                ; print message string
  185.     MVI    C,PRNSTG    ; print string (until '$') function
  186.     JMP    BDOS
  187. ;
  188. ;-------------------------------------------------------------------------
  189. SIGNON:    DB    CR,LF
  190.     DB    ' AREACODE version 2.1 updated 12/10/86',cr,lf
  191.     DB    ' Interactive mode - <RETURN> to exit or ? for help.',CR,LF,'$'
  192. MSG1:    DB    CR
  193.     DB    ' Area code$'
  194. MSG2:    DB    ' is $'
  195. MSG3:    DB    'NOT listed in the program.',CR,'$'
  196. MSG4:    DB    CR,LF,LF
  197.     DB    ' Area code to search for: $'
  198. CRLF:    DB    CR,LF,'$'
  199. ;
  200. HLPMSG:    DB    CR,LF
  201.     DB    ' AREACODE searches a list of areacodes and reports',CR,LF
  202.     DB    ' the region where the entry is found.',CR,LF,LF
  203.     DB    ' The program does NOT provide the areacode for a chosen',CR,LF
  204.     DB    ' City or State.',CR,LF,LF
  205.     DB    ' You may invoke AREACODE in two ways:',CR,LF,LF
  206.     DB    ' From the CP/M command line, type AREACODE ### and one',CR,LF
  207.     DB    ' areacode will be searched, then the program will exit.',CR,LF
  208.     DB    ' If you type AREACODE with no number, you''ll enter the',CR,LF
  209.     DB    ' interactive mode and remain in the program until you',CR,LF
  210.     DB    ' key <RETURN> by itself to exit.',CR,LF,LF,'$'
  211.  
  212. ACTIVE:    DB    0        ; flag for interactive mode
  213. OLDSTK:    DS    2        ; storage for "old" CP/M stack pointer
  214.     DS    20        ; storage for "local" stack
  215. STACK:
  216. ;-------------------------------------------------------------------------
  217. ; storage for area code, region, state etc.
  218. ;
  219. TABLE:    DB    '205'
  220.     DB    'all regions, Alabama.                                 $'
  221.     DB    '907'
  222.     DB    'all regions, Alaska.                                  $'
  223.     DB    '602'
  224.     DB    'all regions, Arizona.                                 $'
  225.     DB    '213'
  226.     DB    'Los Angeles, California.                              $'
  227.     DB    '818'
  228.     DB    'the suburban area near Los Angeles, California.       $'
  229.     DB    '805'
  230.     DB    'Bakersfield, Ventura, and Simi Valley, California.    $'
  231.     DB    '707'
  232.     DB    'Eureka, Napa, and Santa Rosa, California.             $'
  233.     DB    '209'
  234.     DB    'Fresno and Stockton, California.                      $'
  235.     DB    '415'
  236.     DB    'Oakland and San Francisco, California.                $'
  237.     DB    '714'
  238.     DB    'Orange and Palm Springs, California.                  $'
  239.     DB    '619'
  240.     DB    'San Diego and the Imperial Valley, California.        $'
  241.     DB    '916'
  242.     DB    'Sacramento and South Tahoe, California.               $'
  243.     DB    '408'
  244.     DB    'San Jose and Sunnyvale, California.                   $'
  245.     DB    '709'
  246.     DB    'all regions, Newfoundland and Labrador, Canada.       $'
  247.     DB    '506'
  248.     DB    'all regions, New Brunswick, Canada.                   $'
  249.     DB    '902'
  250.     DB    'Prince Edward Island and Nova Scotia, Canada.         $'
  251.     DB    '519'
  252.     DB    'London and Southwestern Ontario, Canada.              $'
  253.     DB    '514'
  254.     DB    'Montreal, Canada.                                     $'
  255.     DB    '705'
  256.     DB    'North Bay and Northeastern Ontario, Canada.           $'
  257.     DB    '807'
  258.     DB    'Thunder Bay and Northwestern Ontario, Canada.         $'
  259.     DB    '613'
  260.     DB    'Ottawa and Eastern Ontario, Canada.                   $'
  261.     DB    '418'
  262.     DB    'Quebec City and Southeastern Quebec, Canada.          $'
  263.     DB    '819'
  264.     DB    'Malartic and Western Quebec, Canada.                  $'
  265.     DB    '416'
  266.     DB    'Toronto, Ontario, Canada.                             $'
  267.     DB    '204'
  268.     DB    'all regions, Manitoba, Canada.                        $'
  269.     DB    '306'
  270.     DB    'all regions, Saskatchewan, Canada.                    $'
  271.     DB    '403'
  272.     DB    'all regions, Alberta, Yukon and NWT, Canada.          $'
  273.     DB    '604'
  274.     DB    'all regions, British Columbia, Canada.                $'
  275.     DB    '303'
  276.     DB    'Denver, Boulder and Fort Collins, Colorado.           $'
  277.     DB    '719'
  278.     DB    'Colorado Springs, Pueblo, Leadville, Alamosa, Colorado$'
  279.     DB    '203'
  280.     DB    'all regions, Connecticut.                             $'
  281.     DB    '302'
  282.     DB    'all regions, Delaware.                                $'
  283.     DB    '202'
  284.     DB    'Washington, District of Columbia.                     $'
  285.     DB    '813'
  286.     DB    'Avon Park, Fort Myers, and Winter Haven, Florida.     $'
  287.     DB    '305'
  288.     DB    'Fort Lauderdale, Key West, Miami and Florida.         $'
  289.     DB    '904'
  290.     DB    'Jacksonville, Florida.                                $'
  291.     DB    '404'
  292.     DB    'Atlanta and Rome, Georgia.                            $'
  293.     DB    '912'
  294.     DB    'Waycross and Savannah, Georgia.                       $'
  295.     DB    '808'
  296.     DB    'all regions, Hawaii.                                  $'
  297.     DB    '208'
  298.     DB    'all regions, Idaho.                                   $'
  299.     DB    '618'
  300.     DB    'Alton, Mount Vernon, and Centralia, Illinois.         $'
  301.     DB    '312'
  302.     DB    'Aurora, Chicago, Elgin, and Highland Park, Illinois.  $'
  303.     DB    '217'
  304.     DB    'Casey and Springfield, Illinois.                      $'
  305.     DB    '815'
  306.     DB    'La Salle, Joliet, and Rockford, Illinois.             $'
  307.     DB    '309'
  308.     DB    'Peoria, Illinois.                                     $'
  309.     DB    '812'
  310.     DB    'Evansville, Indiana.                                  $'
  311.     DB    '219'
  312.     DB    'Gary, Hammond, Michigan City, and South Bend, Indiana.$'
  313.     DB    '317'
  314.     DB    'Indianapolis and Kokomo, Indiana.                     $'
  315.     DB    '712'
  316.     DB    'Council Bluffs, Iowa.                                 $'
  317.     DB    '515'
  318.     DB    'Des Moines and Mason City, Iowa.                      $'
  319.     DB    '319'
  320.     DB    'Dubuque, Iowa.                                        $'
  321.     DB    '316'
  322.     DB    'Dodge City and Wichita, Kansas.                       $'
  323.     DB    '913'
  324.     DB    'Ottawa and Topeka, Kansas.                            $'
  325.     DB    '606'
  326.     DB    'Ashland and Winchester, Kentucky.                     $'
  327.     DB    '502'
  328.     DB    'Louisville, Paducah, and Shelbyville, Kentucky.       $'
  329.     DB    '504'
  330.     DB    'Baton Rouge and New Orleans, Louisiana.               $'
  331.     DB    '318'
  332.     DB    'Lake Charles and Shreveport, Louisiana.               $'
  333.     DB    '207'
  334.     DB    'all regions, Maine.                                   $'
  335.     DB    '301'
  336.     DB    'all regions, Maryland.                                $'
  337.     DB    '617'
  338.     DB    'Boston, Framingham, and New Bedford, Massachusetts.   $'
  339.     DB    '413'
  340.     DB    'Springfield, Massachusetts.                           $'
  341.     DB    '011'
  342.     DB    'the International Access Code.                        $'
  343.     DB    '525'
  344.     DB    'the Country and City code for Mexico City, Mexico.    $'
  345.     DB    '170'
  346.     DB    'Northwest Mexico.                                     $'
  347.     DB    '190'
  348.     DB    'Mexico City, Mexico.                                  $'
  349.     DB    '313'
  350.     DB    'Detroit, Adrian, and Ann Arbor, Michigan.             $'
  351.     DB    '616'
  352.     DB    'Battle Creek, Cadillac, and Grand Rapids, Michigan.   $'
  353.     DB    '517'
  354.     DB    'Lansing and Saginaw, Michigan.                        $'
  355.     DB    '906'
  356.     DB    'Sault Ste. Marie, Michigan.                           $'
  357.     DB    '507'
  358.     DB    'Albert Lea and Rochester, Minnesota.                  $'
  359.     DB    '218'
  360.     DB    'Duluth, Minnesota.                                    $'
  361.     DB    '612'
  362.     DB    'Minneapolis and Saint Paul, Minnesota.                $'
  363.     DB    '601'
  364.     DB    'all regions, Mississippi.                             $'
  365.     DB    '417'
  366.     DB    'Joplin and Springfield, Missouri.                     $'
  367.     DB    '816'
  368.     DB    'Kansas City and Saint Joseph, Missouri.               $'
  369.     DB    '314'
  370.     DB    'Saint Louis, Missouri.                                $'
  371.     DB    '406'
  372.     DB    'all regions, Montana.                                 $'
  373.     DB    '402'
  374.     DB    'Lincoln and Omaha, Nebraska.                          $'
  375.     DB    '308'
  376.     DB    'North Platte and Scottsbluff, Nebraska.               $'
  377.     DB    '702'
  378.     DB    'all regions, Nevada.                                  $'
  379.     DB    '603'
  380.     DB    'all regions, New Hampshire.                           $'
  381.     DB    '609'
  382.     DB    'Atlantic City, Camden, and Trenton, New Jersey.       $'
  383.     DB    '201'
  384.     DB    'Hackensack, Morristown, and Newark, New Jersey.       $'
  385.     DB    '505'
  386.     DB    'all regions, New Mexico.                              $'
  387.     DB    '518'
  388.     DB    'Albany, Greenwich, and Schenectady, New York.         $'
  389.     DB    '716'
  390.     DB    'Buffalo, Niagara Falls, and Rochester, New York.      $'
  391.     DB    '607'
  392.     DB    'Elmira, Ithaca, and Stamford, New York.               $'
  393.     DB    '516'
  394.     DB    'Hempstead, New York.                                  $'
  395.     DB    '914'
  396.     DB    'Monroe, Mount Vernon, and Poughkeepsie, New York.     $'
  397.     DB    '212'
  398.     DB    'New York City (Manhatten and Bronx) New York.         $'
  399.     DB    '718'
  400.     DB    'New York City (Queens, Brooklyn and Staten Island) NY.$'
  401.     DB    '315'
  402.     DB    'Syracuse and Utica, New York.                         $'
  403.     DB    '704'
  404.     DB    'Charlotte and Salisbury, North Carolina.              $'
  405.     DB    '919'
  406.     DB    'Greenville, Raleigh, and Williamston, North Carolina. $'
  407.     DB    '701'
  408.     DB    'all regions, North Dakota.                            $'
  409.     DB    '216'
  410.     DB    'Akron, Cleveland, Massillon, and Youngstown, Ohio.    $'
  411.     DB    '513'
  412.     DB    'Cincinnati and Dayton, Ohio.                          $'
  413.     DB    '614'
  414.     DB    'Columbus, Marietta, and Newark, Ohio.                 $'
  415.     DB    '419'
  416.     DB    'Toldeo, Ohio.                                         $'
  417.     DB    '918'
  418.     DB    'Muskogee and Tulsa, Oklahoma.                         $'
  419.     DB    '405'
  420.     DB    'Oklahoma City, Oklahoma.                              $'
  421.     DB    '503'
  422.     DB    'all regions, Oregon.                                  $'
  423.     DB    '215'
  424.     DB    'Allentown, Chester, and Philadelphia, Pennsylvania.   $'
  425.     DB    '814'
  426.     DB    'Altoona, Erie, and Punxsutawney, Pennsylvania.        $'
  427.     DB    '412'
  428.     DB    'Pittsburgh, Indiana, and Rochester, Pennsylvania.     $'
  429.     DB    '717'
  430.     DB    'Harrisburg, Scranton, and Wilkes-Barre, Pennsylvania. $'
  431.     DB    '809'
  432.     DB    'Bahamas, Bermuda, Puerto Rico, and the Virgin Islands.$'
  433.     DB    '401'
  434.     DB    'all regions, Rhode Island.                            $'
  435.     DB    '803'
  436.     DB    'all regions, South Carolina.                          $'
  437.     DB    '605'
  438.     DB    'all regions, South Dakota.                            $'
  439.     DB    '615'
  440.     DB    'Chattanooga and Nashville, Tennessee.                 $'
  441.     DB    '901'
  442.     DB    'Memphis, Tennesee.                                    $'
  443.     DB    '806'
  444.     DB    'Amarillo, Texas.                                      $'
  445.     DB    '512'
  446.     DB    'Austin, Corpus Christi, and San Antonio, Texas.       $'
  447.     DB    '214'
  448.     DB    'Dallas, Texas.                                        $'
  449.     DB    '713'
  450.     DB    'Houston, Texas.                                       $'
  451.     DB    '409'
  452.     DB    'Galveston, Texas.                                     $'
  453.     DB    '817'
  454.     DB    'Fort Worth, Temple, and Waco, Texas.                  $'
  455.     DB    '915'
  456.     DB    'El Paso, Texas.                                       $'
  457.     DB    '801'
  458.     DB    'all regions, Utah.                                    $'
  459.     DB    '802'
  460.     DB    'all regions, Vermont.                                 $'
  461.     DB    '804'
  462.     DB    'Charlottesville, Norfolk, and Richmond, Virginia.     $'
  463.     DB    '703'
  464.     DB    'Fredericksburg, Roanoke, and Winchester, Virginia.    $'
  465.     DB    '509'
  466.     DB    'Pullman, Spokane, and Walla Walla, Washington.        $'
  467.     DB    '206'
  468.     DB    'Seattle, Tacoma, and Vancouver, Washington.           $'
  469.     DB    '304'
  470.     DB    'all regions, West Virginia.                           $'
  471.     DB    '608'
  472.     DB    'Beloit and Madison, Wisconsin.                        $'
  473.     DB    '715'
  474.     DB    'Eau Claire and Wausau, Wisconsin.                     $'
  475.     DB    '414'
  476.     DB    'Green Bay, Milwaukee, and Racine, Wisconsin.          $'
  477.     DB    '307'
  478.     DB    'all regions, Wyoming.                                 $'
  479.     DB    'Z'-40H        ; "EOF"
  480.     DB    'Z'-40H        ; "EOF"
  481.     DB    'Z'-40H        ; "EOF"
  482. ;
  483.     END
  484.