Реализация Fortran 77 для AVR

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Итак, на чём только мы не программировали бедную Ардуину! И Паскаль, и Ада, и Брейнфак, и Лисп ... ну все отметились, а вот единственный язык для настоящих мужчин как-то до сих пор оставался в стороне. Пришло время это исправить.

Итак, встречайте - реализация Фортрана для AVR!

Правда, сразу же ложка дёгтя :-( Это не кошерный, олдскульный Fortran IV, а убогое, жалкое поделие под названием Fortran 77, которое получилось после того, как сосунки всласть поиздевались над Великим Языком :-( Но, за неимением лучшего, посмотрим на то, что есть.

Итак, реализация включает базовые операции с портами, временем и библиотеку для LCD. Других библиотек обнаружить пока не удалось (что, конечно, не значит что их нет).

Для примера, горячо любимый блинк:

      program Blink
         integer pin13
         do
            read(portb,5) pin13
            if (pin13 .eq. 0) then
               write(portb,5) 1
            else
               write(portb,5) 0
            end if
            call delayms(500) 
         end do
         stop
      end

Вот как это выглядит на экране:

Загружается, мигает, всё пучком!

Ну, я пока приторможу. Если появятся какие-то интересности или найдётся версия кошерного Fortran IV - вернусь к теме. Если кто-то попробует поиспользовать, пишите и выкладывайте примеры.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Я что-то не увидел в коде format с меткой 5.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А должен быть? :-)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Должен.

Первый параметр read() - дескриптор устройства, из которого производится чтение, второй (если есть) - метка формата, третий (если есть) - то это метка оператора, на который передается управление при достижении конца файла...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А здесь первый параметр - порт, второй бит :-(

sadman41
Offline
Зарегистрирован: 19.10.2016

У меня вопрос академический: фортран для МК даёт какие-то преимущества перед тем же вайрингом? Ну, там, может одним махом гайвера побивахом или типа того...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Специально не исследовал, но так, из общих соображений, не вижу чем бы он мог обеспечить себе заметное преимущество.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Насколько я представляю, Фортран обладает следующими преимуществами:

1. Если ты знаешь Фортран, но не знаешь больше ни одного другого языка.

2. Для Фортрана накоплено огромное количество вычислительных библиотек.

3. Фортран ближе к Ассемблеру и легче поддается оптимизации. Поэтому некоторое время (лет 30-40 назад) исполняемый модуль из исходника, написанного на Фортране, получался оптимальнее, чем на других ЯВУ.

В настоящее время для МК IMHO актуальным может быть только 1, да и то - где ж найти такого программиста.

 

PS. Ну а Гайвера побивахом Фортраном, причем, на его же форуме - мысль представляется интересной)))))))

sunjob
sunjob аватар
Offline
Зарегистрирован: 18.07.2013

вспомнил молодость :о) ... однозначно да, у фортрана есть свои маленькие приемущества ... :о)

http://smdc.sinp.msu.ru/index.py?nav=links

https://naif.jpl.nasa.gov/naif/WS2022_announcement_R2.html